如何在 r 中按行名称合并数据框


您可以使用以下基本语法根据行名称合并 R 中的两个数据框:

 #inner join
merge(df1, df2, by= 0 )

#left join
merge(df1, df2, by= 0 , all. x = TRUE )

#outerjoin
merge(df1, df2, by= 0 , all= TRUE )

使用by=0参数,我们可以告诉 R 我们要使用数据块的行名称进行合并。

以下示例展示了如何将每种方法与以下两个数据框一起使用:

 #create first data frame
df1 <- data. frame (points=c(99, 90, 86, 88, 95),
                  assists=c(33, 28, 31, 39, 34))

rownames(df1) <- c(1, 2, 3, 4, 5)

df1

  assist points
1 99 33
2 90 28
3 86 31
4 88 39
5 95 34

#create second data frame
df2 <- data. frame (rebounds=c(17, 15, 22, 26, 25),
                  blocks=c(7, 7, 15, 12, 14))

rownames(df2) <- c(3, 4, 5, 6, 7)

df2

  rebound blocks
3 17 7
4 15 7
5 22 15
6 26 12
7 25 14

示例 1:使用行名称执行内连接

以下代码显示如何使用行名称对两个数据框执行内部联接:

 #perform inner join using row names
merge(df1, df2, by= 0 )

  Row.names points assists rebounds blocks
1 3 86 31 17 7
2 4 88 39 15 7
3 5 95 34 22 15

请注意,只有行名称属于两个数据框的行才会保留在最终合并的数据框中。

示例 2:使用行名称执行左连接

以下代码显示如何使用行名称对两个数据框执行左连接:

 #perform left join using row names
merge(df1, df2, by= 0 , all. x = TRUE )

  Row.names points assists rebounds blocks
1 1 99 33 NA NA
2 2 90 28 NA NA
3 3 86 31 17 7
4 4 88 39 15 7
5 5 95 34 22 15

请注意,第一个数据帧中的所有行都保留在最终合并的数据帧中。

示例 3:使用行名称执行外连接

以下代码显示如何使用行名称对两个数据框执行外连接:

 #perform outer join using row names
merge(df1, df2, by= 0 , all= TRUE )

  Row.names points assists rebounds blocks
1 1 99 33 NA NA
2 2 90 28 NA NA
3 3 86 31 17 7
4 4 88 39 15 7
5 5 95 34 22 15
6 6 NA NA 26 12
7 7 NA NA 25 14

请注意,两个数据框中的所有行都保留在最终合并的数据框中。

其他资源

以下教程解释了如何在 R 中执行其他常见数据框函数:

如何在 R 中进行左连接
如何在 R 中进行 VLOOKUP
如何在R中向数据框添加行

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注