r - df R 中每 x 行的总和,仅在第 n 行输出。 R

标签 r dplyr

我有一个 df:

  df <- data.frame(x = c(1,2,3,4,5,6,7,8,9,10,11,12,13),
                   y = c(0,0,2,0,1,0,0,0,0,3,0,4,0))

我正在寻找精确时刻(时刻 4 之后)每 4 行的总和 这应该是输出:

x   y   z
1   0   0
2   0   0
3   2   0
4   0   2
5   1   0
6   0   0
7   0   0
8   0   1
9   0   0
10  3   0
11  0   0
12  4   7
13  0   0

使用 dplyr,我能够创建具有以下结果的以下代码。

  a <- df %>% 
    dplyr::mutate(b = gl(ceiling(nrow(x)/4), 4, nrow(x))) %>%
    dplyr::group_by(b) %>%
    dplyr::mutate(sum = sum(amount))

x   y   z
1   0   2
2   0   2
3   2   2
4   0   2
5   1   1
6   0   1
7   0   1
8   0   1
9   0   7
10  3   7
11  0   7
12  4   7
13  0   0

但我无法删除数字并将它们替换为 0,除了第 4 行,但问题是如果我有一段 0,它会重复。

最佳答案

这可以通过 zoo 包中的 rollapply 轻松实现,即

library(zoo)

rollapply(df$y, 4, by = 4, sum, fill = 0, align = 'right')
#[1] 0 0 0 2 0 0 0 1 0 0 0 7 0

关于r - df R 中每 x 行的总和,仅在第 n 行输出。 R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44827097/

相关文章:

R 将竞争模型拟合到 dplyr/tidyr/broom 框架内的嵌套数据

r - 使 R 中的错​​误响亮而嘈杂

r - 如何将此 ggplot2 条形图转换为线图?

r - 仅使用函数的非缺失参数应用过滤器

以 tidyeval 的方式删除列

根据列值删除分组依据后的行

r - dplyr 总结输出 - 如何保存它

r - 使用 "probabilities"作为证据使用 cpdist 进行预测

特殊字符的正则表达式 "until but not including"(使用 R)

r - 基于列表中元素的子集数据