我有时间序列数据,我如何做月度报告和变量的平均值? (使用R)

时间:2013-03-14 16:34:52

标签: r date time-series analysis

我的时间序列数据看起来像8/18/2012 11:18:00 PM 6个月,我如何在一个月内将它们按月和一个变量的平均值进行子集化? (使用R)

非常感谢

2 个答案:

答案 0 :(得分:2)

您可以使用xts包。首先,我生成您的数据。在这里,我创建了一个6个月,每天半数据。长数据

dat <- data.frame(date = as.POSIXct('8/18/2012 11:18:00',
                                    format='%m/%d/%Y %H:%M:%S') + 
                         seq(0,by = 60*60*12,length.out=365),
                  value = rnorm(365))

然后我创建了一个xts对象

library(xts)
dat.xts <- xts(x= dat$value,order.by = dat$date)

最后,我使用相当于apply.monthly的方便函数lapply得到这样的内容:

apply.monthly(dat.xts,mean)
2012-08-31 23:18:00  0.03415933
2012-09-30 23:18:00  0.02884122
2012-10-31 22:18:00 -0.27767240
2012-11-30 22:18:00 -0.15614567
2012-12-31 22:18:00 -0.02595911
2013-01-31 22:18:00 -0.23284335
2013-02-16 10:18:00  0.14537790

答案 1 :(得分:1)

您可以format日期并使用aggregate计算平均值(感谢@agstudy获取示例数据):

aggregate(value~format(date,"%Y-%m"),dat,FUN=mean)
  format(date, "%Y-%m")       value
1               2012-08 -0.31409786
2               2012-09 -0.37585310
3               2012-10 -0.04552703
4               2012-11 -0.05726177
5               2012-12  0.04822608
6               2013-01  0.03412790
7               2013-02 -0.10157931