首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否将dataframe的rowname映射到长度不同的其他dataframe的列值?

是否将dataframe的rowname映射到长度不同的其他dataframe的列值?
EN

Stack Overflow用户
提问于 2015-09-16 22:44:10
回答 1查看 27关注 0票数 0

我有一个数据帧df

代码语言:javascript
复制
        col1    col2    col3    col4    col5
row1     0.0     0.0     0.0     0.0     0.0
row2     0.0     0.4     0.4     0.0     0.0
row3     0.5     1.2     0.4     0.3     0.8
row4     3.3     1.4     1.4     1.0     6.3
row5     0.0     0.2     0.0     0.0     0.0
row6     0.8     0.0     0.0     0.0     0.2

和数据帧mapping

代码语言:javascript
复制
rowname mapped_name
row1    a
row2    a
row3    a
row5    b
row6    c

我想要得到

代码语言:javascript
复制
        col1    col2    col3    col4    col5    mapped_name
row1     0.0     0.0     0.0     0.0     0.0    a
row2     0.0     0.4     0.4     0.0     0.0    a
row3     0.5     1.2     0.4     0.3     0.8    a
row4     3.3     1.4     1.4     1.0     6.3    NA
row5     0.0     0.2     0.0     0.0     0.0    b
row6     0.8     0.0     0.0     0.0     0.2    c

因为当我做df$mapped_name <- df[mapping$rowname == rownames(df),]$mapped_name时,它们的长度是不同的

代码语言:javascript
复制
character(0)
Warning message:
In mapping$rowname == rownames(df) :
  longer object length is not a multiple of shorter object length
EN

回答 1

Stack Overflow用户

发布于 2015-09-16 22:47:43

我们可以使用‘match’数据集的'rowname‘列映射'df’的行名,使用该数字索引来获得相应的'mapped_name‘

代码语言:javascript
复制
df$mapped_name <- mapping$mapped_name[match(row.names(df), mapping$rowname)]

df
#     col1 col2 col3 col4 col5 mapped_name
#row1  0.0  0.0  0.0  0.0  0.0           a
#row2  0.0  0.4  0.4  0.0  0.0           a
#row3  0.5  1.2  0.4  0.3  0.8           a
#row4  3.3  1.4  1.4  1.0  6.3        <NA>
#row5  0.0  0.2  0.0  0.0  0.0           b
#row6  0.8  0.0  0.0  0.0  0.2           c
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32611858

复制
相关文章

相似问题

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