Stataメモ 不等式マージ
株価や財務データを扱う際、とにかく年月の問題がある。
例えば、株価データに直近の財務データをマージさせたい、みたいなことが多々ある。
普通のmergeコマンド は一致する値でしかマッチングできないので、直近のデータをマージしたい時はもどかしい。
そのようなマッチングをしたい時に、あれば便利だなと思っていたコマンドがあるらしい。
それがこれ、nearmrgコマンドである。
2022/11/13追記 現在、nearmrgを連続で実行するとマッチングがうまくいかないことがあります。 Stataを再起動した後に、再度実行するとこの現象は起きないようです。 連続して使う場合は注意した方が良いです。 st: Re: unstable results with repeating the nearmrg command
nearmrg [varlist] using "~~.dta", nearvar(varname) [ limit(real) genmatch(newvarname) lower type(mergetype) mergeoptions]
基本はこのような形で、実際のマージで使用すると以下のようになる。
//データセットAは月次株価データ //データセットBは財務データ //[firm]は企業コード //month変数は年月を表す数値データ(例:202201, 202202, ...) use "A.dta", clear nearmrg [firm] using "B.dta", nearvar(month) lower type(1:1)
これは、データセットAの企業コードに一致して、かつ、Aのmonthより小さな値/もしくは等しい値のうち最も近い値でマッチングしなさい、という意味になる。
lower matches to the closest value of nearvar in the using dataset that is less than or equal to nearvar in the master dataset. http://fmwww.bc.edu/RePEc/bocode/n/nearmrg.html
つまり、直近の財務データをマッチングしている。
これまで、株価に直近の決算月をマージして、決算月で財務データをマージして…、みたいな面倒な作業をこれ一つで片付けられるので効率アップできるかな。
ちなみに、"lower"の部分を"upper"に変えれば、大きな値のうち最も近い値でマッチングできる。
upper matches to the closest value that is greater than or equal to nearvar. http://fmwww.bc.edu/RePEc/bocode/n/nearmrg.html
nearmrgのヘルプ http://fmwww.bc.edu/RePEc/bocode/n/nearmrg.html