このページではSTATAの小技をメモしてます。いわゆる俺用。Mac環境です。

ショートカット

・コマンドを実行させる(一部分のみの場合はカーソルで指定

Command+Shift+D

doボタンをいちいちおすのはめんどくさいです。なので、このショートカットを覚えておくと便利。

データセット作成

・データの結合(横に)

たとえば、内閣府「親と子の生活意識に関する調査」は親子のペアデータだけど、それぞれ別々のデータセットになっています(ふざけんなよ!)。しかも、人数もおなじではなく、どちらか片方だけ欠損データになっていたりします。Excel上でマージできないこともないけど事故るのでやめましょう。また、変数名も区別されていないので、どちらにもq1が存在しており、これも大事故の原因になるので、あらかじめスレイブデータのほうが系統的にq*をp*といった変数名にかえておきましょう。こういうことはしばしばおきます。

まず、任意のフォルダの階層にデータセットをマスターとスレイブどちらも用意しておきます。フォルダの階層を移動するコードはめんどくさいので忘れました。

データの横結合のポイントはキーとなる変数です。このデータセットでは幸い、親子は同一のidを持っているので、id変数をキーに両者をマージさせます。ここで大事なのは、あらかじめキー変数でデータをsortしておくことです。エラーがでるので気をつけましょう。

sort id

データを横に合体させるにはマスターデータを開いた状態でmergeコマンドを使います。

merge [キー変数] using [マージさせたいスレイブデータ.dta]

実際にやるとこんなかんじです。

insheet using /Users/tsfmysd/APOLO/dataset/0836_ko.csv, clear
sort id
save /Users/tsfmysd/APOLO/dataset/0836_ko.dta, replace

insheet using /Users/tsfmysd/APOLO/dataset/0836_hogosha.csv, clear
sort id
save /Users/tsfmysd/APOLO/dataset/0836_hogosha.dta, replace

/* merge
/* 子ども票がマスター */
clear
set maxvar 10000
use /Users/tsfmysd/Dropbox/APOLO/dataset/0836_ko, clear
merge id using 0836_hogosha.dta,
save /Users/tsfmysd/Dropbox/APOLO/dataset/dataset.dta, replace

基本的に、ことあるごとにclearとreplaceしておけば予期せぬ事故は防げます。setコマンドは多くの変数を許容する命令です。パネルデータなどを横につなげると事故がおきるのでこれもとりあえず10000とかにしておけば安心です。肝心のマージコマンドは、id変数をキーにして次のファイルとマージさせてねという簡単なものです。変数リストをながめたり記述統計量をだしたりして、なにか事故がおきてないか確認しましょう。

データが完全に対応していることは現実のデータでは基本ありえません。そこでマージしたときに生まれる_merge変数が大事になってきます。_merge は、 2つのデータの結合関係を示しています。

_merge=3 : キー変数がどちらのデータにもあるよ
_merge=1 : キー変数がマスターデータにしかないよ
_merge=2 : キー変数がスレイブデータにしかないよ

この変数をてがかりにハンドリングがうまくいっているかを確認するとよいです。最初からがっちゃんこして配布しろよ…などとは言ってはいけません。