我有一个简单的问题,但不知道怎么做。
我有两个数据格式:mydfa和mydfb。我希望将mydfa中的行名与mydfb中的行名相匹配,并将mydfb列c中的项提取到mydfa (如果有)并得到结果。
麦德法
rownames x y z
app3 1 3 4
app2 1 4 4
app5 1 4 5麦德福
rownames a b c
app1 5 4 2
app3 5 5 6
app4 5 4 7
app5 5 3 8结果
rownames x y z c
app3 1 3 4 6
app2 1 4 4 NA
app5 1 4 5 8发布于 2015-10-08 14:44:45
使用match计算出哪个行名映射到哪里,然后用它对第二个数据帧的行进行子集:
> mydfa$c = mydfb[match(row.names(mydfa), row.names(mydfb)),"c"]
> mydfa
x y z c
app3 1 3 4 6
app2 1 4 4 NA
app5 1 4 5 8为了了解它是如何工作的,把它拆开:
> match(row.names(mydfa), row.names(mydfb))
[1] 2 NA 4这就是说,mydfa中的第一行名是mydfb中的第二个行名,第二个行名没有匹配,第三个行名与mydfb中的第四个行名匹配。然后,带有方括号的子设置从mydfb$c获取第二个元素安娜和第四个元素,并创建mydfa$c。
https://stackoverflow.com/questions/33018920
复制相似问题