首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据中的行名与另一列匹配,并提取相应的列(如果存在的话)?

如何将数据中的行名与另一列匹配,并提取相应的列(如果存在的话)?
EN

Stack Overflow用户
提问于 2015-10-08 14:39:21
回答 1查看 4.7K关注 0票数 1

我有一个简单的问题,但不知道怎么做。

我有两个数据格式:mydfamydfb。我希望将mydfa中的行名与mydfb中的行名相匹配,并将mydfb列c中的项提取到mydfa (如果有)并得到结果。

麦德法

代码语言:javascript
复制
rownames  x y z  
app3      1 3 4
app2      1 4 4
app5      1 4 5

麦德福

代码语言:javascript
复制
 rownames     a b c 
    app1      5 4 2
    app3      5 5 6 
    app4      5 4 7
    app5      5 3 8

结果

代码语言:javascript
复制
 rownames     x y z  c  
    app3      1 3 4  6
    app2      1 4 4  NA
    app5      1 4 5  8
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-08 14:44:45

使用match计算出哪个行名映射到哪里,然后用它对第二个数据帧的行进行子集:

代码语言:javascript
复制
> 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

为了了解它是如何工作的,把它拆开:

代码语言:javascript
复制
> match(row.names(mydfa), row.names(mydfb))
[1]  2 NA  4

这就是说,mydfa中的第一行名是mydfb中的第二个行名,第二个行名没有匹配,第三个行名与mydfb中的第四个行名匹配。然后,带有方括号的子设置从mydfb$c获取第二个元素安娜和第四个元素,并创建mydfa$c

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33018920

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档