【问题标题】:Rolling mean partinioned by different columns in RR中不同列划分的滚动平均值
【发布时间】:2019-11-08 14:43:06
【问题描述】:

我在 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】:
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))

【讨论】:

  • 你能解释一下这段代码的作用和它的工作原理吗?
  • 试过这个,它不会改变数据框中的任何东西
  • @DiogoSá 你是什么意思:“它不会改变数据框中的任何东西”?
猜你喜欢
  • 2014-12-25
  • 2016-08-01
  • 1970-01-01
  • 2019-09-24
  • 1970-01-01
  • 2019-10-05
  • 2021-08-07
  • 1970-01-01
  • 2020-09-20
相关资源
最近更新 更多