我希望计算R data.table
的后续观察中的%差异,按变量分组。例如,给定这样的数据集:
dt <- data.table(group=c(rep("A", 3), rep("B", 3)),
index=rep(1:3, 2),
val=1:6)
# group index val
# 1: A 1 1
# 2: A 2 2
# 3: A 3 3
# 4: B 1 4
# 5: B 2 5
# 6: B 3 6
我喜欢这样的结果,计算val
的%差异(第一个记录从1&gt; 2开始,所以100%,第二个2&gt; 3所以50%差异,等等。):
# group index pct.diff
# 1: A 1 1.00
# 2: A 2 0.50
# 3: B 1 0.25
# 4: B 2 0.20
答案 0 :(得分:1)
您可以使用diff
和.N
删除每个组中的最终记录:
dt[, list(index=index[-.N],
pct.diff=diff(val) / val[-.N]),
group]
这会在问题的底部产生结果。