我在 h 中有数据,我想在 bw 中求和,在 10 个步骤后我想重置 cumsum。我如何获得这个?
h bw
1 0 0
2 0 0
3 1 1
4 0 1
5 1 2
6 0 2
7 0 2
8 1 3
9 1 4
10 1 5
11 0 0
12 0 0
13 0 0
14 0 0
15 1 1
16 1 2
17 1 3
18 0 3
19 0 3
20 1 4
21 1 1
22 0 1
目前我正在处理这个:
ff = function(x)
{
cs = cumsum(x)
cs - cummax((x == 0) * cs)
}
但它会在 h 为 0 时重置,而不是在 10 个值之后。
非常感谢!
最佳答案
您可以将向量按每个元素的位置对 10 取模进行拆分,以作为单行代码执行此操作。
as.numeric(unlist(sapply(split(df$bw, (seq_along(df$bw)-1) %/% 10), cumsum)))
# [1] 0 0 1 2 4 6 8 11 15 20 0 0 0 0 1 3 6 9 12 16 1 2
关于重置 10 个值后的累计和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60772684/