R数据表-如何在组中使用上一行的值 [英] R Data table - how to use previous row value within group
本文介绍了R数据表-如何在组中使用上一行的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望按组计算当前行和上一行之间的差异.
I wish to calculate the difference between the current row and previous row, by groups.
x = data.table(a=c(15, 25, 10, 12), b = c(1,1,2,2))
> x
a b
1: 15 1
2: 25 1
3: 10 2
4: 12 2
> x[, c:= a - c(NA, a[.I-1]), by=b]
Warning messages:
1: In a - c(NA, a[.I - 1]) :
longer object length is not a multiple of shorter object length
2: In `[.data.table`(x, , `:=`(c, a - c(NA, a[.I - 1])), by = b) :
RHS 1 is length 3 (greater than the size (2) of group 2). The last 1 element(s) will be discarded.
我希望获得的是:
> x
a b c
1: 15 1 NA
2: 25 1 10
3: 10 2 NA
4: 12 2 2
推荐答案
#Using development version of data.table
x[,value:=a-shift(a,1,type="lag"),by=b]
a b value
1: 15 1 NA
2: 25 1 10
3: 10 2 NA
4: 12 2 2
这篇关于R数据表-如何在组中使用上一行的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文