我在合并两个数据框时遇到问题,优先考虑小数据框,请考虑以下示例:
d1
x y
a 4
b 5
c 9
d2
y z
5 2
7 8
9 3
4 1
6 8
如果d1的y列= d2的y列,我希望获得与小数据帧长度相同的长度,如下所示:
merged
y x z
4 a 1
5 b 2
9 c 3
我写了以下代码,但似乎不起作用:
merged <- merge(d1, d2, by.x="y", by.y="y")
任何人都可以帮忙吗?
谢谢。
答案 0 :(得分:1)
如果颠倒数据集的顺序,则可以在输出中获得5行,如:
merge(d2, d1, by="y")
您可以通过以下方式将附加列z
添加到d1
:
d1$z<-d2$z[match(d1$y,d2$y)]
您收到的警告表示两个数据集中的列具有相同的名称,这些列不是您要匹配的列。要查看字段名称中的重叠,请使用:
intersect(names(d1),names(d2))
(恰好也是参数by
的默认值)。