【问题标题】:R trailing cumsum per group每组 R 尾随 cumsum
【发布时间】:2017-07-12 07:21:37
【问题描述】:

我需要计算 R 中每组的运行 cumsum,但 cumsum 的窗口只能是最后 3 个观察值:

例如,如果我有一个包含人名、日期和分数的表格,如下所示:

   Name       Date Score
1  John 2017-01-01     4
2  John 2017-01-02     5
3  John 2017-01-03     3
4  John 2017-01-04     1
5  John 2017-01-05     4
6  John 2017-01-06     4
7   Ben 2017-01-01     4
8   Ben 2017-01-02     4
9   Ben 2017-01-03     5
10  Ben 2017-01-04     2
11  Ben 2017-01-05     3
12  Ben 2017-01-06     4
13  Ben 2017-01-07     4
14  Ben 2017-01-08     4

我想添加一个“自定义累计”列,其中累计(每组)过去三天的分数,即我想要以下结果:

   Name       Date Score Special_cum_sum
1  John 2017-01-01     4               4
2  John 2017-01-02     5               9
3  John 2017-01-03     3              12
4  John 2017-01-04     1               9
5  John 2017-01-05     4               8
6  John 2017-01-06     4               9
7   Ben 2017-01-01     4               4
8   Ben 2017-01-02     4               8
9   Ben 2017-01-03     5              13
10  Ben 2017-01-04     2              11
11  Ben 2017-01-05     3              10
12  Ben 2017-01-06     4               9
13  Ben 2017-01-07     4              11
14  Ben 2017-01-08     4              12

【问题讨论】:

    标签: r apply cumsum


    【解决方案1】:

    您可以将 zoos rollapply 与 dplyrs group_by 和 mutate 结合使用:

    library(zoo)
    library(dplyr)
    ?rollapply
    Data <- Data %>% group_by(Name) %>%
         mutate(Special_cum_sum = rollapply(Score, 3, sum, align = "right", partial = T))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-01
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 2018-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多