我的问题如下:
我想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)
如果有任何单线解决方案,请大大欣赏它.
您可以按列中的值进行分组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)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |