将一列中的值与另一列的名称匹配

时间:2016-06-05 00:45:44

标签: r

我有一个char列,我需要将该列的值与我​​的数据框中其他列的名称相匹配,以便从另一列中提取值。我添加了一张图片,因为我觉得它更容易理解。

enter image description here

1 个答案:

答案 0 :(得分:0)

我们可以使用row/column索引从第一个数据集中提取元素,并在“d2”中创建“结果”列

d2$result <- d1[-1][cbind(1:nrow(d1), match(d2$mycol, names(d1)[-1]))]
d2
#  mycol result
#1     a     40
#2   bxb     88
#3   bxb     76
#4    ct     33

也可能存在单个数据集,即'd1'并且想要获得'd2'。在这种情况下,请执行meltsubset

library(reshape2)
subset(melt(d1, id.var="mycol"), mycol==variable, select= c(1,3))

数据

d1 <- data.frame(mycol = c("a", "bxb", "bxb", "ct"), a = c(40, 8, 43, 94), 
 `bxb` =c(7, 88, 76, 12), ct = c(4,6, 8954, 33), stringsAsFactors=FALSE, 
 check.names=FALSE) 
d2 <- data.frame(mycol = c('a', 'bxb', 'bxb', 'c'), stringsAsFactors=FALSE)