xtsライブラリを使ってみる−2
その1はこちら「xtsライブラリを使ってみるー1」
マニュアルを読み込んで大体(私が)使いそうな関数をその1の記事と合わせて以下のサンプルで網羅した感じ。
特にlag関数の挙動が大事。
library(xts) #前回同様、サンプル行列で試す data(sample_matrix) sample.xts <- as.xts(sample_matrix) #lag関数を使えば日付を1日ずらすことができる。 lag(sample.xts) #例えばリターンを計算したいなら以下のようにすればOK sample.xts/lag(sample.xts)-1 #↓記事1では以下のように月末時のデータを抜いたが、もうちょっと汎用的な関数があった #index.monthlast <- endpoints(sample.xts) #sample.xts[index.monthlast] #月末だけのデータを取得。 #ここで注意したいのがOLHC(Open,Low,High,Close)データだと、月単位でOHLCを計算してくれること to.monthly(sample.xts) #週次も同様で週ごとでOLHCしてくれる to.weekly(sample.xts) to.period(sample.xts,period="weeks") #日付型を作る関数firstof lastof. #2000年初日を作成 firstof(2000) #2007年10月末を作成 lastof(2007,10) #データの日時のみを抽出するにはindex関数を使う.この状態で日次の変更もできる index(sample.xts) index(sample.xts)[1] <- as.POSIXct("2010-01-01 11:11:11") head(sample.xts) #日時の型を調べる indexClass(sample.xts) #mergeでデータ合体できる x <- xts(4:10, Sys.Date()+4:10) y <- xts(1:6, Sys.Date()+1:6) #SQLでいうインナージョインやレフト・ライトジョインも可能 merge(x,y) merge(x,y, join='inner') merge(x,y, join='left') merge(x,y, join='right') #mergeは列で結合するが、rbindだと行ごとに結合 rbind(x,y) #欠損値を補間する関数もある。zooパッケージの関数na.locfをさらにgenericに。 #以下マニュアルより。 x <- xts(1:10, Sys.Date()+1:10) x[c(1,2,5,9,10)] <- NA x #時系列的な意味でその値の直近値で値を補間 na.locf(x) #↑の逆。次の日の値で今日の値を置くイメージ na.locf(x, fromLast=TRUE)#