R data.table选择组块中的上一行

bro*_*oli 3 r data.table

我有以下示例数据框.

id value
a  3
a  4
a  8
b  9
b  8
Run Code Online (Sandbox Code Playgroud)

我想转换它,以便我可以计算连续行之间的"值"列的差异.所以预期的结果是

id value prevValue
a   3     0
a   4     3
a   8     4
b   9     0
b   8     9
Run Code Online (Sandbox Code Playgroud)

请注意,在每个组中,我希望值序列以0开头,连续值来自前一个值.我尝试了以下内容

x = x[,list(
prevValue = c(0,value[1:(.N-1)])
),by=id]
Run Code Online (Sandbox Code Playgroud)

但没有运气.提前致谢.

mne*_*nel 8

使用负索引,例如:

x[,prev.value := c(0,value[-.N]) ,by=id]
Run Code Online (Sandbox Code Playgroud)