次の形式のデータがあります。
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
すると、最初の4桁を削除してからスラッシュを続けることで、月を取得できます。ここでは、これをインデックス変数として使用して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)
しかし、とにかくコメントをありがとう!