Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 天数的滚动总和为1,如果该值等于0,则重置_R - Fatal编程技术网

R 天数的滚动总和为1,如果该值等于0,则重置

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相

假设我有这个数据集

我想要这个结果

我不知道如何做到这一点,但这是我的伪代码

问题=如果问题==0,0,所有前1的总和

我试过了

数据集%mutateproblem=if_elseproblem==0,0,problem+lagproblem

这只会让我得到2作为最高数字。我将如何做到这一点。此外,总计的列名也可能与问题不同。

这里有一个data.table选项。转换为data.table setDT,按“Problem”的rleid游程长度id分组,将“Problem”与行号seq_len.N相乘,并分配:=它到“Problem”

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))