gpt4 book ai didi

r - 遇到 0 时按组重置的 Cumsum

转载 作者:行者123 更新时间:2023-12-02 09:20:54 25 4
gpt4 key购买 nike

下面是我的数据框,我想得到"is"列。当 cumsum 根据“id”的“value”字段达到 0 时,我似乎无法重置 cumsum 。还有其他类似的问题,但解决方案不适用于我的实际数据集。

test<- data.frame(id = c(1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4), value = c(1,1,0,1,1,1,1,1,0,1,1,0,1,1,0,0), yes = c(1,2,0,1,1,2,3,4,0,1,2,0,1,2,0,0))

我已经尝试过这个:

test <- data.table(test)  # preferred might be: `setDT(test)`

test<-test[, wrong := cumsum(value), by=id]

最佳答案

您可以像这样动态创建一个新的变量:

test[, wrong := cumsum(value), by=.(id, tempID=cumsum(value==0))]
test
id value correct wrong
1: 1 1 1 1
2: 1 1 2 2
3: 1 0 0 0
4: 1 1 1 1
5: 2 1 1 1
6: 2 1 2 2
7: 2 1 3 3
8: 2 1 4 4
9: 3 0 0 0
10: 3 1 1 1
11: 3 1 2 2
12: 3 0 0 0
13: 4 1 1 1
14: 4 1 2 2
15: 4 0 0 0
16: 4 0 0 0

请注意test <-这里没有必要,如 :=将通过引用更新 data.table。

关于r - 遇到 0 时按组重置的 Cumsum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42702141/

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