平均移动三个月与前n个月相比,前三个月是否不包括在内?

时间:2018-06-19 12:52:29

标签: r

一些数据

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个月用户的总人数之比是什么。

如何计算?

1 个答案:

答案 0 :(得分:0)

一个选择是使用rollmean参数align =“ left”创建一列,并在另一个参数中使用align =“ right”。如果要让该功能甚至用于观察次数少于3的组,则必须使用参数part = T的rollapply函数。