dplyrで時系列データの処理
で書いた、”dplyrでの時系列処理ってどうするんじゃい”というのの簡単な例。
下で示したようなやり方で大半は片付くのではないだろうか(たぶん)。
まず、ライブラリ&サンプルデータの作成。
lubridateパッケージが大事で、こいつで日付を操作しつつdata.frameのままdplyrで裁いてデータ処理をしていくという方針である。
library(xts) library(lubridate) library(dplyr) # 適当なxtsデータ x <- as.data.frame(sample_matrix) x$index <- as.Date(rownames(sample_matrix)) > head(x) Open High Low Close index 2007-01-02 50.03978 50.11778 49.95041 50.11778 2007-01-02 2007-01-03 50.23050 50.42188 50.23050 50.39767 2007-01-03 2007-01-04 50.42096 50.42096 50.26414 50.33236 2007-01-04 2007-01-05 50.37347 50.37347 50.22103 50.33459 2007-01-05 2007-01-06 50.24433 50.24433 50.11121 50.18112 2007-01-06 2007-01-07 50.13211 50.21561 49.99185 49.99185 2007-01-07
では、このxというデータが月ごとに何件ずつデータをもっているのかをdplyrで集計してみると
> # 月次の集計 > x %>% group_by(month=month(x$index)) %>% summarize(n()) Source: local data frame [6 x 2] month n() (dbl) (int) 1 1 30 2 2 28 3 3 31 4 4 30 5 5 31 6 6 30
となる。
このノリで全部いいんじゃないかな、xtsとかもういらない子なじゃないかなと思ってる。