R的滚动平均值由R中的不同列分配

问题描述 投票:0回答:1

我正在R中工作,我需要对数据集的最后3个值(由3个不同的列划分)进行滚动平均。列的值之一每次更改时,滚动平均值应重新开始滚动。

以下示例描述了我的目标:

Material   Channel   client   value   mean   
---------------------------------------------
    1         2        2        5      NA
    1         2        2        10     NA
    1         2        2        7      7,3
    1         2        2        10     9
    1         2        5        5      NA
    1         2        5        3      NA
    1         2        5        5      13

我尝试使用rollmean函数,但是它没有按列对数据集进行分区。

input_mes_cluster[, peso_medio:=rollmean(peso, k = 12) , by= c("cluster","material","canal", "cliente", "regiao")]

如何获得预期的结果?

谢谢!

r
1个回答
0
投票
library(tidyverse)
library(roll)

data.frame(Material = rep(1,7), 
           Channel = rep(2,7), 
           client = c(2,2,2,2,5,5,5), 
           value = c(5,10,7,10,5,3,5)) %>% 
  as_tibble() %>% 
  group_by(Material, Channel, client) %>% 
  mutate(mean = roll::roll_mean(as.matrix(value), width = 3))
© www.soinside.com 2019 - 2024. All rights reserved.