一些数据
df <- data.frame(
dates = seq(as.Date('2018-01-01'), as.Date('2018-12-01'), by = "month"),
user_id = c("a","b","c","a","b","c","a","b","c","a","b","c"),
somenum = 1:12
)
df
dates user_id somenum
1 2018-01-01 a 1
2 2018-02-01 b 2
3 2018-03-01 c 3
4 2018-04-01 a 4
5 2018-05-01 b 5
6 2018-06-01 c 6
7 2018-07-01 a 7
8 2018-08-01 b 8
9 2018-09-01 c 9
10 2018-10-01 a 10
11 2018-11-01 b 11
12 2018-12-01 c 12
使用答案,例如here,我能够计算出3个月的滚动平均值。解决方案按用户顺序排列数据,然后使用rollapply()
。
这对于计算例如为average
滚动3个月的user_id
。如果我想计算前三个月到现在的滚动average
,不包括最初三个月的mean
,怎么办?
例如user_id
'c
'有3个月的average
12 + 9 + 6 = 27/3 = 9
。如果需要前3个,则只需mean(3) = 3
。如果我的数据更长,则可能比最初的首3个字还早3个月。
最终目标是分析用户行为变化...最近3个月与之前3个月用户的总人数之比是什么。
如何计算?
答案 0 :(得分:0)
一个选择是使用rollmean参数align =“ left”创建一列,并在另一个参数中使用align =“ right”。如果要让该功能甚至用于观察次数少于3的组,则必须使用参数part = T的rollapply函数。