我有以下格式的数据:
date x
2001/06 9949
2001/07 8554
2001/08 6954
2001/09 7568
2001/10 11238
2001/11 11969
... more rows
我想提取每个月的x均值。我用聚合尝试了一些代码,但是 失败。感谢您提供帮助。
答案 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)
但是还是要感谢你的评论!