如何在R中基于多列合并数据框架

107 阅读1分钟

你可以使用以下基本语法在R中基于多列合并两个数据框架“

merge(df1, df2, by.x=c('col1', 'col2'), by.y=c('col1', 'col2'))

下面的例子展示了如何在实践中使用这种语法。

例子:合并基于多列的数据框架

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

#define data frames
df1 = data.frame(playerID=c(1, 2, 3, 4, 5, 6),
                 team=c('A', 'B', 'B', 'B', 'C', 'C'),
                 points=c(19, 22, 25, 29, 34, 39))

df2 = data.frame(playerID=c(1, 2, 3, 4),
                 tm=c('A', 'B', 'B', 'B'),
                 rebounds=c(7, 8, 8, 14))

#view first data frame
df1

  playerID team points
1        1    A     19
2        2    B     22
3        3    B     25
4        4    B     29
5        5    C     34
6        6    C     39

#view second data frame
df2 

  playerID tm rebounds
1        1  A        7
2        2  B        8
3        3  B        8
4        4  B       14

请注意,这两个数据框架共享playerID列,但每个数据框架中的球队列有不同的名称:

  • 第一个数据框有 "team"列
  • 第二个数据框有 "tm"列

为了根据球员ID和球队列来合并这些数据框,我们需要使用by.xby.y参数。

我们可以使用下面的代码来执行这个合并:

#merge two data frames
merged = merge(df1, df2, by.x=c('playerID', 'team'), by.y=c('playerID', 'tm'))

#view merged data frame
merged

  playerID team points rebounds
1        1    A     19        7
2        2    B     22        8
3        3    B     25        8
4        4    B     29       14

最终合并的数据框包含属于两个原始数据框的四个球员的数据。

其他资源

下面的教程解释了如何在R中执行与数据框架有关的其他常见功能。

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