R:数据中列之间的差异()table

R: diff() between columns in data table

对于不当的标题,我深表歉意。

dtd.dt分别是输入和期望的输出。

library(data.table)
set.seed(10)
dt = data.frame(x=sample(10, 3), y=sample(10,3))
dt = as.data.table(dt)
# > dt 
#    x y
# 1 :6 7
# 2 :3 1
# 3 :4 2

d.dt = dt[, z:=c(-4, 3, NA)]
# > d.dt 
#    x y  z
# 1 :6 7 -4
# 2 :3 1  3
# 3 :4 2 NA

预期的d.dt[, z] 是通过x 列的下一行减去第y 列的当前行得到的。

根据预期的输出,似乎我们正在用 'y' 的当前行减去 'x' 的下一行。要获得后续行或下一行,我们可以使用 data.table 中的 shift 并使用参数 type='lead'.

dt[, z:= shift(x, type='lead')-y]
dt
#   x y  z
#1: 6 7 -4
#2: 3 1  3
#3: 4 2 NA