2015-09-04 78 views
1

我想在R的後續觀察中計算%diff,並將其按變量分組。例如,給定的數據集是這樣的: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-> 2,因此100%,第二2-> 3,從而50%DIFF等):

# 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

可以使用diff.N和移除最後記錄每個組中:

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

這產生的結果爲問題的底部。