メモ。
time series - subsetting tricks for xts in R - Stack Overflow
xtsのデータを月ごとに分けるときにどうするんだろうと思って調べたら、.indexXXX
という関数が用意されてるらしい。
?indexClass
するとヘルプが見れる。indexから月とか日とかのデータをもってくるのに使えるのはこのへん。
# time component extraction/conversion .indexDate(x) .indexday(x) .indexmday(x) .indexwday(x) .indexweek(x) .indexmon(x) .indexyday(x) .indexyear(x) .indexhour(x) .indexmin(x) .indexsec(x)
でもいろいろ直観に反するところがある。
例。
> library(xts) > data(sample_matrix) > (a <- as.xts(sample_matrix)[1]) Open High Low Close 2007-01-02 50.03978 50.11778 49.95041 50.11778
これの月は1だと思いきや、0(インデックスがゼロから始まる)。
> .indexmon(a) [1] 0
年は2007だと思いきや、107(1900年が基準?)。
> .indexyear(a) [1] 107
日は2だと思いきや、13515(1970年が基準)。
> .indexday(a) [1] 13515 attr(,"tzone") [1] "" attr(,"tclass") [1] "POSIXct" "POSIXt"
まあ日に関しては、.indexday
ではなく.indexmday
を使えば大丈夫。
> .indexmday(a) [1] 2
ちなみにindexのクラスは変えれるらしいので、↑の挙動は絶対ではないのかも。調べてないけど。
The specified value for
indexClass<-
must be a character string containing one of the following:Date
,POSIXct
,chron
,yearmon
,yearqtr
ortimeDate
.
(?indexClass
のヘルプより)
うー。奥が深い。