R:数据中列之间的差异()table
R: diff() between columns in data table
对于不当的标题,我深表歉意。
dt
和d.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
对于不当的标题,我深表歉意。
dt
和d.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