根据R中另一列的值动态选择列

时间:2018-07-30 17:51:29

标签: r data.table

如何使用数据表中的列作为变量名称,以便根据所述列从其他列中获取值。

library(data.table)
a = c(2,3,5)
b = c(5,7,7)
c = c(1,2,3)
x = c ('a','b','c')
dt <- data.table(a,b,c,x)

> dt
   a b c x
1: 2 5 1 a
2: 3 7 2 b
3: 5 7 3 c

输出我希望基于第x列的值的y列,该列包含要获取的值的列名。

dt
   a b c x y
1: 2 5 1 a 2
2: 3 7 2 b 7
3: 5 7 3 c 3

我尝试了

dt[,get(x)]

dt[,match(x,colnames(dt))]

1 个答案:

答案 0 :(得分:3)

通过遍历行序列,用get提取值并将其分配为创建“ y”

dt[, y := .SD[, get(x), seq_len(.N)]$V1]
dt
#   a b c x y
#1: 2 5 1 a 2
#2: 3 7 2 b 7
#3: 5 7 3 c 3