如果两个cols必须相同,我如何合并两个数据帧?

时间:2016-05-28 14:35:45

标签: r dataframe merge

我有两个数据框。例如,df1看起来像:

Name Month Number       
1.H  1      8
2.H  2      7  
3.H  3      6 
4.A  1      9
5.A  2      10
6.A  3      11

df2看起来像:

Name Month index      
1.H    1      3
2.H    2      2  
3.H    3      1
4.A    1      3 
5.A    2      5
6.A    3      9

我想将其合并到以下df

  Name Month Number index
  1.H  1    8       3
  2.H  2    7       2
  3.H  3    6       1
  4.A  1    9       3
  5.A  2    10      5
  6.A  3    11      9

如何将两个df合并到此df

我已经尝试了merge函数by.xby.y,但这只允许合并一列,但我也想要第二列。 < / p>

2 个答案:

答案 0 :(得分:1)

您可以一次合并多个列:

merge(df1, df2, by = c('Name', 'Month'))

事实上,这应该是默认值,因为by的默认值为intersect(names(df1), names(df2))

答案 1 :(得分:0)

有很多不同的方法可以做到这一点。另外两个答案给出了基本的方法。以下是包装的其他两种方法。

您还可以使用sqldf包:

sqldf("select a.*, b.index from df1 as a join df2 as b on a.name = b.name and a.month = b.month")

您可以使用dplyr包:

inner_join(df1, df2, by = c("name", "month"))