gpt4 book ai didi

r - data.table,如何重置cumsum(或添加一个组来分组)

转载 作者:行者123 更新时间:2023-12-04 09:14:15 26 4
gpt4 key购买 nike

我有一个包含一些计算列的数据表

dt <- data.table(x=c(1,4,-3,-2,3,4))
dt[,y:=cumsum(x)]
dt[,q:=cumsum(ifelse(x>0,x,0))]
x y q
1: 1 1 1
2: 4 5 5
3: -3 2 5
4: -2 0 5
5: 3 3 8
6: 4 7 12

我需要做的是在 y==0 之后重置 q。本质上,第 1:4 行属于子组 A,而第 5:6 行属于子组 B。结果应该是:
    x y  q
1: 1 1 1
2: 4 5 5
3: -3 2 5
4: -2 0 5
5: 3 3 3
6: 4 7 7

我想我可以引入另一个值为 A,B,... 的列组,它会在 y==0 之后改变,然后通过 expession 使用它,但我不知道如何(至少除了使用 for 子句之外)

最佳答案

data.table开发版

dt[, q:=cumsum(ifelse(x>0,x,0)),by=shift(cumsum(y==0),1, fill=0)] 
#library(devtools)
#install_github("Rdatatable/data.table", build_vignettes = FALSE)
# x y q
#1: 1 1 1
#2: 4 5 5
#3: -3 2 5
#4: -2 0 5
#5: 3 3 3
#6: 4 7 7

关于r - data.table,如何重置cumsum(或添加一个组来分组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29604222/

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