R data.table 选择组 block 中的前一行

标签 r data.table

我有以下示例数据框。

id value
a  3
a  4
a  8
b  9
b  8

我想对其进行转换,以便计算连续行之间“值”列的差异。所以预期的结果是

id value prevValue
a   3     0
a   4     3
a   8     4
b   9     0
b   8     9

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

x = x[,list(
prevValue = c(0,value[1:(.N-1)])
),by=id]

但没有运气。 提前致谢。

最佳答案

使用负索引,例如:

x[,prev.value := c(0,value[-.N]) ,by=id]

关于R data.table 选择组 block 中的前一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18245932/

相关文章:

仅返回 R 中包含 NA 的列

r - CRAN 包取决于 Bioconductor 包安装错误

R:列表中的快速哈希搜索(环境)

r - 通过 data.table 在多列上从长到宽

r - 二进制矩阵的字符串列表

r - 在 R csv 中计算岛屿

r - 如何添加先前分组/汇总数据的二级摘要,以便使用 dplyr 在 R 中进行排序

R:按分组变量将简单函数应用于特定列

linux - 合并 data.frames 导致内存不足错误

当存在多个重复列时,删除表中的重复列