如何在 r 中进行左连接(附示例)


您可以使用merge()函数在基 R 中执行左连接:

 #left join using base R
merge(df1,df2, all. x = TRUE )

您还可以使用dplyr包中的left_join()函数来执行左连接:

 #left join using dplyr
dplyr::left_join(df2, df1)

注意:如果您正在处理非常大的数据集,则 left_join()函数往往比merge()函数更快。

以下示例展示了如何在实践中通过以下数据框使用每个函数:

 #define first data frame
df1 <- data. frame (team=c(' Mavs ', ' Hawks ', ' Spurs ', ' Nets '),
                  dots=c(99, 93, 96, 104))

df1

   team points
1 Mavs 99
2 Hawks 93
3 Spurs 96
4 Nets 104

#define second data frame
df2 <- data. frame (team=c(' Mavs ', ' Hawks ', ' Spurs ', ' Nets '),
                  rebounds=c(25, 32, 38, 30),
                  assists=c(19, 18, 22, 25))

df2

   team rebound assists
1 Mavs 25 19
2 Hawks 32 18
3 Spurs 38 22
4 Nets 30 25

示例 1:使用 Base R 进行左连接

我们可以使用基础 R 中的merge()函数来执行左连接,使用“team”列作为要连接的列:

 #perform left join using base R
merge(df1, df2, by=' team ', all. x = TRUE )

   team points rebound assists
1 Hawks 93 32 18
2 Mavs 99 25 19
3 Nets 104 30 25
4 Spurs 96 38 22

示例 2:使用 dplyr 进行左连接

我们可以使用 dplyr 包中的left_join()函数来执行左连接,使用“team”列作为要连接的列:

 library (dplyr)

#perform left join using dplyr 
left_join(df1, df2, by=' team ')

   team points rebound assists
1 Mavs 99 25 19
2 Hawks 93 32 18
3 Spurs 96 38 22
4 Nets 104 30 25

您会注意到这两个函数之间的一个区别是merge()函数根据用于执行连接的列自动按字母顺序对行进行排序。

相反, left_join()函数保留第一个数据帧中行的原始顺序。

其他资源

以下教程解释了如何在 R 中执行其他常见操作:

如何在 R 中进行内连接
如何在R中进行模糊匹配
如何在R中向数据框添加列
如何从R中的数据框中删除列

添加评论

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