将数据帧与r中具有不同列名的数字列匹配/合并

时间:2018-03-07 03:47:04

标签: r

我有两个具有不同列的数据帧,这些列具有大量行(约200万)

第一个是df1

enter image description here

第二个是df2

enter image description here

我需要将表格1中y列中的值与表2中的R列匹配 例: 看到红色框中df1中的两行与红色框中的df2中的两行匹配 enter image description here

然后我需要得到匹配值的分数

所以结果应该是这样的,它应该存储在数据帧中:

enter image description here

我的尝试:首先是我在R中的初学者,所以当我搜索时,我发现我可以使用Match功能,合并功能,但我没有得到我想要的结果,因为我不知道如何正确使用它们,因此,我需要一步一步非常简单的解决方案

2 个答案:

答案 0 :(得分:1)

 merge(df1,df2,by.x="y",by.y="R")[c("y","score")]
    y score
1   2     3
2 111     4

答案 1 :(得分:1)

我们可以使用match

中的base R
df2[match(df2$R, df1$y, nomatch = 0), c("R", "score")]
#   R score
#3   2     3
#4 111     4

或其他选项semi_join来自dplyr

library(dplyr)
semi_join(df2[-1], df1, by = c(R = "y"))
#    R score
#1   2     3
#2 111     4