我有以下格式的一些数据:
date x
2001/06 9949
2001/07 8554
2001/08 6954
2001/09 7568
2001/10 11238
2001/11 11969
... more rows
我想提取每个月的 x 平均值。我尝试了一些聚合代码,但失败了。感谢您提供任何帮助。
我有以下格式的一些数据:
date x
2001/06 9949
2001/07 8554
2001/08 6954
2001/09 7568
2001/10 11238
2001/11 11969
... more rows
我想提取每个月的 x 平均值。我尝试了一些聚合代码,但失败了。感谢您提供任何帮助。
在这里,我模拟了一个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))
对不起...只是创建一个月序列向量然后使用tapply。这很容易:
m.seq = rep(c(6:12, 1:5), length = nrow(data))
m.means = tapply(data$x, m.seq, mean)
但无论如何感谢您的评论!