数据表 - 如何生成由包含感兴趣的列名称的列索引的新变量

Luk*_*Shi 1 r data.table

我的问题如下:

我想d根据列中的信息生成列c.列c提供了从中获取数据的列的名称,用于该给定行.

  a  b  c  d  
1 5  3  a  5
2 8  6  b  6
3 12 8  a  12
Run Code Online (Sandbox Code Playgroud)

我目前的方法效率很低:

DT[, d:=mget(c)]
for(i in 1:nrow(DT)) { e[i] <- DT[,d][[i]][i]}
DT[,e:=e]
Run Code Online (Sandbox Code Playgroud)

如果有任何单线解决方案,请大大欣赏它.

Ric*_*ven 6

您可以按列中的值进行分组c,并使用它get()来获取值.

dt[, d := get(c), by = c]
Run Code Online (Sandbox Code Playgroud)

这使

dt
#     a b c  d
# 1:  5 3 a  5
# 2:  8 6 b  6
# 3: 12 8 a 12
Run Code Online (Sandbox Code Playgroud)

数据:

dt <- data.table(a = c(5, 8, 12), b = c(3, 6, 8), c = c("a", "b", "a"))
Run Code Online (Sandbox Code Playgroud)

  • `setDT(dt)`将数据设置为数据表?我不知道问题是什么.这对我来说可以. (2认同)