如何使用 dplyr 连接多列数据框


您可以使用以下基本语法使用 dplyr 连接 R 中基于多列的数据框:

 library (dplyr)

left_join(df1, df2, by=c(' x1 '=' x2 ', ' y1 '=' y2 '))

当满足以下条件时,此特定语法将执行左连接:

  • df1 的x1列中的值与 df2 的x2列中的值匹配。
  • df1 的y1列的值对应于 df2 的y2列的值。

以下示例展示了如何在实践中使用此语法。

示例:使用 dplyr 连接多列

假设我们在 R 中有以下两个数据框:

 #define first data frame
df1 = data. frame (team=c('A', 'A', 'B', 'B'),
                 pos=c('G', 'F', 'F', 'G'),
                 dots=c(18, 22, 19, 14))

df1

  team pos points
1 AG 18
2 AF 22
3 BF 19
4 BG 14

#define second data frame
df2 = data. frame (team_name=c('A', 'A', 'B', 'C', 'C'),
                 position=c('G', 'F', 'F', 'G', 'F'),
                 assists=c(4, 9, 8, 6, 5))

df2

  team_name position assists
1 GA 4
2 AF 9
3 BF 8
4 CG 6
5 CF 5

我们可以在 dplyr 中使用以下语法来执行基于两列的左连接:

 library (dplyr)

#perform left join based on multiple columns
df3 <- left_join(df1, df2, by=c(' team '=' team_name ', ' pos '=' position '))

#view result
df3

  team pos points assists
1 AG 18 4
2 AF 22 9
3 BF 19 8
4 BG 14 NA

生成的数据框包含df1中的所有行,并且仅包含df2中球队和位置值匹配的行。

另请注意,如果两个数据框共享相同的列名称,您可以简单地使用以下语法来连接多个列:

 library (dplyr)

#perform left join based on multiple columns
df3 <- left_join(df1, df2, by=c(' team ', ' position '))

其他资源

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

如何在 R 中进行左连接
如何在 R 中进行右连接
如何在 R 中进行内连接
如何在 R 中进行外连接

添加评论

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