每组 R 尾随 cumsum
R trailing cumsum per group
我需要计算 R 中每组的 运行 cumsum,但 cumsum 的 window 只能是最后 3 个观察值:
例如,如果我有一个 table,其中包含一个人的姓名、日期和分数,如下所示:
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
我想添加一个 "custom cumsum" 列,其中包含(每组)最近三天的分数,即我想要以下结果:
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
您可以将 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))
我需要计算 R 中每组的 运行 cumsum,但 cumsum 的 window 只能是最后 3 个观察值:
例如,如果我有一个 table,其中包含一个人的姓名、日期和分数,如下所示:
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
我想添加一个 "custom cumsum" 列,其中包含(每组)最近三天的分数,即我想要以下结果:
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
您可以将 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))