从R中的时间序列中提取月平均值

时间:2012-08-16 12:54:38

标签: r time-series mean

我有以下格式的数据:

    date     x     
    2001/06  9949 
    2001/07  8554  
    2001/08  6954 
    2001/09  7568 
    2001/10 11238  
    2001/11 11969 
    ... more rows

我想提取每个月的x均值。我用聚合尝试了一些代码,但是 失败。感谢您提供帮助。

2 个答案:

答案 0 :(得分:1)

在这里,我模拟了一个名为df的数据框,其中包含更多数据:

df <- data.frame( 
      date = apply(expand.grid(2001:2012,1:12),1,paste,collapse="/"),
      x = rnorm(12^2,1000,1000),
      stringsAsFactors=FALSE)

使用构建date向量的方式,您可以通过删除第一个四位数后跟一个正斜杠来获得几个月。在这里,我将其用作tapply中的索引变量来计算均值:

with(df, tapply(x, gsub("\\d{4}/","",date), mean))

答案 1 :(得分:0)

抱歉...只需创建一个月序列向量然后使用lapply。 这很容易:

m.seq = rep(c(6:12, 1:5), length = nrow(data))
m.means = tapply(data$x, m.seq, mean)

但是还是要感谢你的评论!