【发布时间】:2017-11-04 22:30:18
【问题描述】:
我的数据集具有以下特征:玩家 ID、周数和积分。
我想计算前几周的分数平均值,但不是所有过去的几周,只是到最后 5 或更少(如果当前周小于 5)。
示例:对于 player_id = 5,week = 7,结果将是 player_id = 5 和第 2、3、4、5 和 6 周的 POINTS 平均值。
以下代码已经计算了前一周的平均值,因此我需要进行调整以使其仅适用于前一周的 5 次。
player_id<-c(rep(1,30),rep(2,30),rep(3,30),rep(4,30),rep(5,30))
week<-1:30
points<-round(runif(150,1,10),0)
mydata<- data.frame(player_id=player_id,week=rep(week,5),points)
mydata<-mydata %>%
group_by(player_id) %>% # the group to perform the stat on
arrange(week) %>% # order the weeks within each group
mutate(previous_mean = cummean(points) ) %>% # for each week get the
cumulative mean
mutate(previous_mean = lag(previous_mean) ) %>% # shift cumulative
mean back one week
arrange(player_id) # sort by player_id
【问题讨论】:
标签: r cumulative-sum