对此真的很沮丧。我只想获取 data.table 中的行之间的差异。其中差异(n)=值(n)-值(n-1)。因此,与我所拥有的相比,结果应该移动 1 个位置,并且每个“变量”的第一个位置应该是 NA。即差异应该是(NA,4,-2,NA,1,-8)。每个“变量的第一个值应该是 NA,因为没有位置 n-1。知道如何修改函数来完成此操作吗?真的很想知道如何使用 rollapplyr 来做到这一点,以便我自己理解.
谢谢。
数据表:
> dt
variable value
1: xyz 3
2: xyz 7
3: xyz 5
4: abc 9
5: abc 10
6: abc 2
> dt[,dif := rollapplyr(value, 2, function(x){r <- diff(x,lag = 1)}, align = "right"), by = list(variable)]
> dt
variable value dif
1: xyz 3 4
2: xyz 7 -2
3: xyz 5 4
4: abc 9 1
5: abc 10 -8
6: abc 2 1