R 时间序列上的移动平均数
我需要帮助获得变量E、N和Z的平均值,每个ID 7天 数据帧为290512 x 5,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
头部
如下所示:
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