根据R data.table中另一列的值移动列

时间:2018-05-16 23:25:42

标签: r data.table

考虑以下情况,我尝试使用shift获取v2 - > Target_v3

library(data.table)
dt = data.table(v1=c(1,0,1,1,0),
                v2=letters[1:5],
                Target_v3=c(NA,"b","b","c","e"))
> dt
   v1 v2 Target_v3
1:  1  a        NA
2:  0  b         b
3:  1  c         b
4:  1  d         c
5:  0  e         e

我需要的是一个新列v3,它是v2中的值,滞后于数字v1 - 与Target_v3

一样

我尝试使用shift,但无法获得我想要的内容,例如 dt[, v3 := shift(v2, v1, type="lag")]似乎错了,并给出了错误的结果。

1 个答案:

答案 0 :(得分:1)

这样一个愚蠢的解决方案怎么样?

dt[, v3 := sapply(1:nrow(dt),function(i){v2[i-v1[i]]})]

enter image description here