假设我们具有以下数据集:
library(data.table)
t <- data.table(id = c(1,3,1,3,4,1,3, 4),
year = c(2017, 2017, 2018, 2018, 2018, 2019, 2019, 2019),
value = c(1,1,3,2,4,5,6, 9))
我想计算(不将其转换为广泛的数据集)某列每年之间的差异。可以安全地假定每年都存在,但并非每年都存在每个id。
结果应类似于以下内容的列: NA,NA,2、1,NA,2、4、5
(当前年度的值减去上一年的值)
由于data.table中变量的标准分配似乎不允许这样做,我将如何进行此计算?
t[, diff := ???]
答案 0 :(得分:1)
使用shift
软件包中的data.table
函数。
# Should work with given OP's data (t)
data[, difference := value - shift(value), id]
PS:
t
作为对象(它是基本的R函数)diff
作为列名(这是基本的R函数)答案 1 :(得分:0)
或使用diff
通过'id'求相邻元素的差值
t[, difference := c(NA, diff(value)), id]