yyyy年mm月dd日から○○個前のデータから取得したいという時
xtsパッケージを使っているとタイトルにあるように
- yyyy年mm月dd日から○○個前のデータから取得したいという時
というのが結構ある。結構あるがいい書き方がわからない&一回書いてもよく忘れるのでここにメモしておく。いい書き方がまた見つかったら追加更新予定。
#とりあえずサンプルデータ&ライブラリのロード library(xts) data(sample_matrix) sample.xts <- as.xts(sample_matrix) #2007-06-17の4個前のデータから取得 index.start <- first(which(index(sample.xts) >= as.POSIXct("2007-06-17"))) - 4 index.end <- nrow(sample.xts)
こんな感じでインデックスの開始・終了点を作っておいて、あとはデータをブチ抜けばいい。
as.POSIXctとなっている箇所は元のデータの日付が何型で入っているかに依存するので、そこは適宜変更しないといけない。
> head(sample.xts[index.start:index.end],10) Open High Low Close 2007-06-13 47.46135 47.52004 47.43083 47.43083 2007-06-14 47.43279 47.43279 47.33490 47.34884 2007-06-15 47.33306 47.40490 47.26157 47.36779 2007-06-16 47.36452 47.40463 47.26056 47.26056 2007-06-17 47.24783 47.47249 47.24783 47.39521 2007-06-18 47.43470 47.56336 47.36424 47.36424 2007-06-19 47.46055 47.73353 47.46055 47.67220 2007-06-20 47.71126 47.81759 47.66843 47.66843 2007-06-21 47.71012 47.71012 47.61106 47.62921 2007-06-22 47.56849 47.59266 47.32549 47.32549
ちゃんと2007年6月17日から4つ前のデータが一番初めのデータになっている。