重置 10 个值后的累计和

标签 r cumsum

我在 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/

相关文章:

r - 使用正则表达式分隔列

r - 无法按 R 中的列对数据进行分组

r - 如何识别数据集中的重复子序列

r - 为什么 $ 与线性模型的摘要不部分匹配?

python - 获取 boolean 数组中至少 n 个连续 False 值的第一个 block 的索引

r - 在 tidyverse 中使用 Transform 和 mutate 来计算累积和

r - cumsum() 截至并包括 dplyr 中的当前日期

r - 有什么方法可以进行过滤以及在ddply中进行汇总?

python - 从条件开始计算行数