gpt4 book ai didi

r - data.table 列上的差异

转载 作者:行者123 更新时间:2023-12-04 11:37:07 24 4
gpt4 key购买 nike

对此真的很沮丧。我只想在 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

最佳答案

我们可以使用 shift() :

dt[,diff := value - shift(value), by = variable]
> dt
variable value diff
1: xyz 3 NA
2: xyz 7 4
3: xyz 5 -2
4: abc 9 NA
5: abc 10 1
6: abc 2 -8

关于r - data.table 列上的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37141277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com