按关键列合并两个数据框

15

我有两个数据框。第一个数据框中,我有一个KEY/ID列和两个变量:

KEY V1 V2
1   10  2
2   20  4
3   30  6   
4   40  8
5   50 10
在第二个数据框中,我有一个键/ID列和第三个变量。
KEY V3 
1    5  
2   10  
3   20  

我希望提取第一个数据框中与第二个数据框匹配键列的行,并将V3列添加到最终数据集。

KEY V1 V2 V3 
1   10  2  5
2   20  4 10 
3   30  6 20   

这是我使用子集和合并函数的尝试

subset(data1, data1$KEY == data2$KEY) 
merge(data1, data2, by.x = "KEY", by.y = "KEY")

它们都不能完成任务。

任何提示都将不胜感激。谢谢!

3个回答

22

merge(data1, data2, by="KEY") 就可以实现!


1
你可以使用 dplyr*_join。根据示例数据,以下两种方法将得到相同的结果:
library(dplyr)
df_merged <- inner_join(data1, data2, by = 'KEY')
df_merged <- right_join(data1, data2, by = 'KEY')

inner_join 返回 df1 中与 df2 匹配的所有行,以及 df1 和 df2 的所有列。

right_join 返回 df2 中的所有行,以及 df1 和 df2 的所有列。


1
如果您想要的是内连接,那么您的尝试应该可以实现。如果没有,请使用检查两个表中键列的格式。
除了这些和Christian建议的合并之外,您还可以使用-
library(plyr)
join(data1, data2, by="KEY", type="inner")

或者

library(data.table)
setkey(data1, KEY)
setkey(data2, KEY)
data1[,list(data1,data2)]

谢谢!我之前不熟悉plyr包。 - user3618451

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接