R 天数的滚动总和为1,如果该值等于0,则重置
假设我有这个数据集 我想要这个结果 我不知道如何做到这一点,但这是我的伪代码 问题=如果问题==0,0,所有前1的总和 我试过了 数据集%mutateproblem=if_elseproblem==0,0,problem+lagproblem 这只会让我得到2作为最高数字。我将如何做到这一点。此外,总计的列名也可能与问题不同。这里有一个data.table选项。转换为data.table setDT,按“Problem”的rleid游程长度id分组,将“Problem”与行号seq_len.N相乘,并分配:=它到“Problem”R 天数的滚动总和为1,如果该值等于0,则重置,r,R,假设我有这个数据集 我想要这个结果 我不知道如何做到这一点,但这是我的伪代码 问题=如果问题==0,0,所有前1的总和 我试过了 数据集%mutateproblem=if_elseproblem==0,0,problem+lagproblem 这只会让我得到2作为最高数字。我将如何做到这一点。此外,总计的列名也可能与问题不同。这里有一个data.table选项。转换为data.table setDT,按“Problem”的rleid游程长度id分组,将“Problem”与行号seq_len.N相
library(data.table)
setDT(df1)[, Problem := seq_len(.N) * Problem, rleid(Problem)]
df1
# Problem
# 1: 0
# 2: 1
# 3: 2
# 4: 3
# 5: 0
# 6: 0
# 7: 1
# 8: 2
# 9: 0
#10: 0
#11: 1
或者使用base R
数据
相关:
with(rle(df1$Problem), sequence(lengths) * rep(values, lengths))
df1 <- data.frame(Problem = c(0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1))