首页 > 解决方案 > 根据 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,它是 in 的值v2,被数字滞后v1- 如Target_v3

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

标签: rdata.table

解决方案


像这样愚蠢的解决方案呢?

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

在此处输入图像描述


推荐阅读