R data.table

时间:2015-09-04 15:37:19

标签: r data.table

我希望计算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

1 个答案:

答案 0 :(得分:1)

您可以使用diff.N删除每个组中的最终记录:

dt[, list(index=index[-.N],
          pct.diff=diff(val) / val[-.N]),
   group]

这会在问题的底部产生结果。