【问题标题】:Last 3 month lags in r最近 3 个月滞后于 r
【发布时间】:2020-10-28 12:15:43
【问题描述】:

数据是:

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 个月的销售额)。

预期的输出应该是:

【问题讨论】:

    标签: r


    【解决方案1】:

    使用list(-(1:3)) 的宽度来获得-1、-2、-3 的偏移量。

    rollapplyr(Sales, list(-(1:3)), mean, fill = NA)
    

    请注意,这个最近的问题非常相似Variable frameshift rolling average for multiple variables

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 2017-07-27
      • 2022-01-17
      • 2021-10-25
      • 2016-12-28
      • 1970-01-01
      相关资源
      最近更新 更多