R:数据表中列之间的diff()

时间:2015-12-04 14:44:36

标签: r data.table difference

我为不正当的标题道歉。

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的下一行来计算的。

1 个答案:

答案 0 :(得分:2)

根据预期输出,我们似乎正在用当前行'y'减去下一行'x'。要获得后续行或下一行,我们可以使用shift中的data.table并使用参数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