私の時系列データは、6か月間2012年8月18日午後11時18分になりますが、月ごとにサブセット化し、1か月以内の変数の平均をとるにはどうすればよいですか?(Rを使用)
どうもありがとう
私の時系列データは、6か月間2012年8月18日午後11時18分になりますが、月ごとにサブセット化し、1か月以内の変数の平均をとるにはどうすればよいですか?(Rを使用)
どうもありがとう
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
(サンプルデータの@agstudyに感謝します)format
を使用して、日付と平均を計算できます。aggregate
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