xts時系列データに対して直近n日間(計算日前日から数えて過去n日間)の最小値を求める
タイトルの件、すぐに出来なかった。
Rリテラシーが低いことを改めて認識したわ。
さて、やりたいことは改めてこれ。
xts時系列データに対して直近n日間(計算日前日から数えて過去n日間)の最小値を求める
例えば、下記のようにYJ7203.Closeの前日から過去に遡って4日間の最小値を計算したい。
下図はうまく計算できた結果。
rollapply関数を使用して次のように書くと良い。
head(rollapply(lag(YJ7203, k=1), 4, min))
たったこれだけだが、辿り着くまでに相当苦労しましたよw。
以下、苦労の変遷をメモ。
※)上図データとは期間が異なる。
まず元データの確認。
> head(YJ7203) YJ7203.Open YJ7203.High YJ7203.Low YJ7203.Close YJ7203.Volume YJ7203.Adjusted 2007-01-04 8110 8140 8060 8090 6986200 8090 2007-01-05 8100 8100 7860 7900 10876000 7900 2007-01-09 7900 7930 7810 7870 9750900 7870 2007-01-10 7890 7890 7660 7690 11632000 7690 2007-01-11 7750 7790 7630 7660 10417100 7660 2007-01-12 7740 7840 7720 7820 11302500 7820
ここでrunMinを使えばいいじゃん!と思って次のようにやった結果。
> head(runMin(YJ7203, n=4)) [,1] 2007-01-04 NA 2007-01-05 NA 2007-01-09 NA 2007-01-10 7890 2007-01-11 7750 2007-01-12 7740
ふぁああああああああ?なんで6列あったものが1列になっているの?
しかも、求められた結果、計算当日データ含まれているっぽい。。。
ここから迷走。
runMin使えないじゃんということで、自作しようと思った。
で、ここでだいぶハマったが・・・。そこまでメモっとく必要ないか・・・。
以上。