我有两个数据框。例如,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.x
和by.y
,但这只允许合并一列,但我也想要第二列。 < / p>
答案 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"))