R 时间序列上的移动平均数

R 时间序列上的移动平均数,r,dataframe,multiple-columns,moving-average,R,Dataframe,Multiple Columns,Moving Average,我需要帮助获得变量E、N和Z的平均值,每个ID 7天 数据帧为290512 x 5,头部如下所示: ID Date E N Z 1 2012-03-16 676620.5 4090699 26.827 1 2012-03-16 676620.5 4090699 26.828 1 2012-03-16 676620.5 4090699 26.827 1 2012-03-16 676620.5 40906

我需要帮助获得变量E、N和Z的平均值,每个ID 7天

数据帧为290512 x 5,
头部
如下所示:

ID  Date        E           N       Z
1   2012-03-16  676620.5    4090699 26.827
1   2012-03-16  676620.5    4090699 26.828
1   2012-03-16  676620.5    4090699 26.827
1   2012-03-16  676620.5    4090699 26.828
1   2012-03-16  676620.5    4090699 26.828
1   2012-03-16  676620.5    4090699 26.828
声明:


  • ID您的示例数据只有一个日期。是否要按7天的单独窗口(例如,按周)计算平均值?如果是这样,您可以创建一个新列,
    Week
    ,每个星期都有一个唯一的标识符,并使用该列按日期分组,而不是按日期分组

    或者,您可能希望采用滚动平均值。查看
    zoo
    软件包中的函数
    rollmean
    。例如:

    x.Date <- as.Date(paste(2004, rep(1:4, 4:1), sample(1:28, 10), sep = "-"))
    x <- zoo(rnorm(12), x.Date)
    
    rollmean(x, 3)
    
     2004-01-17  2004-01-23  2004-01-26  2004-02-07  2004-02-18  2004-02-24  2004-03-20  2004-03-27 
     0.60112115  0.80818151  0.64316904  0.06831874 -0.03085218 -0.05787362  0.34177806 -0.40876877 
    

    x.Date它是数据帧的
    头部。我来看看
    rollmean
    函数。
    m <- 7
    df_wm <- sapply(df_dm, function(x) rollapply( x, width = m, by = m, align = "left", FUN = mean))
    
    x.Date <- as.Date(paste(2004, rep(1:4, 4:1), sample(1:28, 10), sep = "-"))
    x <- zoo(rnorm(12), x.Date)
    
    rollmean(x, 3)
    
     2004-01-17  2004-01-23  2004-01-26  2004-02-07  2004-02-18  2004-02-24  2004-03-20  2004-03-27 
     0.60112115  0.80818151  0.64316904  0.06831874 -0.03085218 -0.05787362  0.34177806 -0.40876877