根据单元格选择列

时间:2019-05-28 05:32:06

标签: r

我有这样的df:

color=c('red','red','blue')
red = c(10,30,50)
blue = c(123,456,789)
df = data.frame(color,red,blue)

对于每一行,我想根据哪个colname等于color列中的值来选择列值

例如:

color2=c('red','red','blue')
answer=c(10,30,789) 
df2=data.frame(color2, answer)

我尝试过: test = match(df $ color,names(df)) test2 = df [,test]

但这给了我

red=c(10,30,30)
red.1=c(10,30,30)
blue=c(123,456,789)

wrong = data.frame(red,red.1,blue)

1 个答案:

答案 0 :(得分:1)

我们可以使用行索引和match中的列索引来提取值

cbind(df[1], answer = df[-1][cbind(seq_len(nrow(df)), 
                       match(df$color, names(df)[-1]) )])
#    color answer
#1   red     10
#2   red     30
#3  blue    789