日次データから月末のみを抽出する

概要

・xts型の日次データから月末データのみを抽出するメモ
・もっと効率よい方法を募集中です → あった(補足参照) → まだあった(補足2参照)
・応用すれば月初や、月末1日前なども取得可能かと

データ

例えば以下の様な日次データがxts型として格納されているとする。
以下は10年スワップレート(FREDより)

方法

一行で書くと以下

順を追って書くと以下

1行目でまず月毎に分解します。tmp1には月ごとに分解されたxtsのリストが格納されます。
2行目で、各リストの要素に対して、tailを使って一番下の行(月末データ)を抽出します。
3行目でリストをマージします。

すると上のように月末データのみを保有するxtsが返ってきます。
月初を取得する場合はtailを使っているところをheadに。

補足(追記)

この記事を書いた数分後に某鎌倉方面から「まだそんな方法でやってるのプゲラその方法が許されるのは小学生までよねーゲラゲラ」というコメントを拝受しました

日次データから月末のみを抽出する – My Life as a Mock Quant
http://d.hatena.ne.jp/teramonagi/20140614/1402745254

to.monthlyで四本値が取得できるので

とすることでそれぞれ月初、月末を取得することができます。さんざん悩んでいたワタクスの時間はものの数分で虚無へと帰りました。

ま、まあこれだと月末1日前とか取得できないから…(震え声

補足2(追記)

同じく某鎌倉方面から完膚なきまでに追撃を受けましたのでここに追記させていただきます。

とありますように、endpoints関数で取得したいindex値を取得し、日次xtsから該当の行だけ抽出すればいいんじゃねーのという方針

上から月末、月初、月末1日前のデータを抽出。
月初のデータならto.monthly使った方が楽なような気がしますが、endpointsを使えばほぼどのような条件でも抽出できそうですね。