r - 移动平均 3 个月与前 n 个月而不包括前 3 个月?
问题描述
一些数据
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
使用例如这里的答案,我可以计算出 3 个月的滚动平均值。解决方案按用户顺序排列数据,然后使用rollapply()
.
average
这适用于计算a的滚动 3 个月user_id
。如果我想计算average
从前 3 个月到那个的滚动,不包括最初的 3 个月,该mean
怎么办?
例如user_id
' c
' 有 3 个月average
的12 + 9 + 6 = 27/3 = 9
. 如果想要前 3 个,那就是mean(3) = 3
. 如果我的数据更长,则可能比第一个初始 3 个月还要早 3 个月。
最终目标是分析用户行为变化......最近 3 个月与前 3 个月用户的 somenum 比率是多少。
这怎么可能计算出来?
解决方案
一种选择是使用 rollmean 参数 align="left" 创建一个列并在另一个中使用 align="right"。如果您希望该函数甚至用于观察次数少于 3 的组,则必须使用带有参数 partial=T 的 rollapply 函数。
推荐阅读
- c# - 如何检查玩家是否在输入字段中写了一些东西?
- amazon-web-services - 深度学习和模型性能
- maven - 创建 maven 项目时出现错误
- c# - 为什么我的过滤器不起作用?d.DefaultView.RowFilter = cls;
- php - 单击 Ajax WordPress 加载更多自定义帖子
- wordpress - 更改单击操作上的单选按钮以提交表单重力表单
- java - 将参数发布到 http 链接
- java - JPA 多对多与使用 @IdClass 的额外列在 springTestContextPreparation Hibernate AnnotationException“没有持久的 id 属性”中失败
- c++ - 如何在 CMakeLists.txt 文件中的第三方库头文件中抑制 Clang 警告?
- c# - 游戏重置时,Hinge Joint 2D 停止正常工作