r - 最近 3 个月滞后于 r
问题描述
数据是:
Category <- c(rep("A",4))
Month <- c(1,2,3,4)
Sales <- c(10,15,20,25)
df <- data.frame(Category,Month,Sales)
df <- df %>% filter(Category=='A') %>%
group_by(Month) %>%
summarise(Sales=sum(Sales,na.rm=TRUE)) %>%
mutate(lag_1 = dplyr::lag(Sales, 1),
lag_2 = dplyr::lag(Sales, 2),
lag_3 = dplyr::lag(Sales, 3),
lag_3_mean = rollapply(Sales,3,mean,align='right',fill=NA))
我希望 lag_3_mean 是过去 3 个月的平均值,不包括本月。例如,在第 4 个月,lag_3_mean = 平均值(第 3、2、1 个月的销售额)。
预期的输出应该是:
解决方案
使用宽度list(-(1:3))
来获得 -1、-2、-3 的偏移量。
rollapplyr(Sales, list(-(1:3)), mean, fill = NA)
请注意,这个最近的问题非常相似 Variable frameshift rolling average for multiple variables
推荐阅读
- python - 用于颜色名称 Python 的 RBG 值
- list - OCaml,使用 < > = 运算符比较 int 列表
- c++ - C++ CMake:取消定义参考。libusb
- php - 在表中插入值在 php 中不起作用
- amazon-web-services - AWS ECS - 集群利用率
- haskell - 为什么我们需要将 let 放在列表中的函数前面
- python - 当文件名不断变化时,如何在python中解压文件?
- php - PHP:如何从另一个对象数组中的数组中查找值
- c# - 在具有 Multiple Facet、Unwind 和 sortByCount 的聚合框架 C# 中使用 Facet
- java - Elasticsearch Java API 按数组中的字符串过滤