匹配两个不同数据帧中的数字

时间:2014-03-31 17:16:41

标签: r dataframe matching

我有两个数据框:x包含两列:A& B:

A      B
4      1
6      2
9      2
10     3
15     3

数据框y包含多个列,其中两个列在我的分析中很有用:

C       D
6      549
15     631
4      344
10     209

请注意,数据框y中的列C包含数据框x的A列中可用的一些(但不是全部)值。

我想要做的是找到x $ A和y $ D之间匹配的行,然后将D列中的相应值添加到我的数据框x中。因此得到的x看起来像:

A      B    D
 4      1    344
 6      2    549
 9      2    NA
 10     3    209
 15     3    631

2 个答案:

答案 0 :(得分:3)

您可以将公共列指定为merge,这是必须在此处完成的。

merge(x, y, by.x='A', by.y='C', all=TRUE)
   A B   D
1  4 1 344
2  6 2 549
3  9 2  NA
4 10 3 209
5 15 3 631

默认情况下,merge使用列名的交集来指定两个数据帧之间的公共列。如果没有共同的列名,或者这是不正确的集,则必须使用byby.xby.y进行指定。

答案 1 :(得分:0)

merge(x, y, by.x = "A", by.y = "C", all = TRUE)