Stata

Ver.14が出ている。

条件文の書き方

意味記号
等しい==
等しくない!=
等しくない半角で〜=
以上>=
以下<=
かつ&
または半角で|

・・・if hoge == 1 の「==1」は省略できるらしい。

変数の操作

  • 変数の作成
  • sum関数の利用
    gen 【新しい変数】=sum(【利用する変数】)
     
    例)gen var2=sum(var1) 
    「gen」では上からその値までの合計値が入るが、全体の合計値を入れたい場合には「egen」を利用する。
    例)egen var3=sum(var1) 
    var1var2var3
    116
    236
    366
  • 変数の書き換え

文字列の操作

  • 文字列から任意の文字を抽出する。
    gen str2(←この場合は2byteの文字列) 【新しい変数名】=substr(【元の変数名】,【開始文字】,【文字数】)
     
    例)gen str6 var2=substr(var1,1,6)
  • 文字列を数値に変換して、元の変数を置き換える。
    destring 【変換したい変数名】, replace
     
    例)destring var1, replace
  • 文字列を数値に変換した新しい変数を作る。
    destring 【元の変数名】, gen(【新しい変数名】)
     
    例)destring var1, gen(var2)
  • 数値を文字列に変換して、元の変数を置き換える。
    gen 【一時的な変数名】=string(【変換したい変数名】)
    drop 【変換したい変数名】
    rename 【一時的な変数名】 【変換したい変数名】
     
    例)gen val3=string(val2)
        drop val2
        rename val3 val2
  • 通し番号を振る。
    gen 【通し番号の変数名】=_n
     
    例)gen ID=_n
  • カテゴリー毎に通し番号を振る。
     カテゴリーとなる変数についてソートを実行し、それぞれについて1から通し番号を振る。
    bysort 【カテゴリーとなる変数名】: gen 【通し番号の変数名】=_n
     
    例)bysort year: gen ID=_n
    ただし、カテゴリーとなる変数内に同じ値が複数ある場合には、それらについての順番はランダムとなる。同じ値のものたちの中での順番についてはソート前の順番と同じにしたいときは、次のようにする。
    例)sort year, stable
        by year: gen ID=_n

繰り返し

  • 区間を利用する場合
    for num 【最初】/【最後】: 【プログラム:「X」のところに区間の数字が順に代入される】
     
    例)for num 3/10: replace valX=0 if valX==.
  • 区間を利用する場合(複数のプログラム)
    forvalues 【任意の文字】 = 【最初】/【最後】 {
    【プログラム:「`【任意の文字】'」のところに区間の数字が順に代入される】
          ・
          ・
          ・
    【プログラム】
    }
     
    例)forvalues i = 3/10 {
        replace val`i'=0 if val`i'==.
        replace val99 = 1 if val0==`i'
        }
  • 文字を利用する場合
    foreach 【任意の文字】 in 【文字1】 【文字2】 ・・・ {
    【プログラム:「`【任意の文字】'」のところに【文字1】から順に代入される】
          ・
          ・
          ・
    【プログラム】
    }
     
    例)foreach x in ID Year Date {
        replace `x'=0 if `x'==.
        replace val99 = 1 if val0=="`x'"
        }
    例)foreach i in 2 5 17 {
        replace val`i'=0 if val`i'==.
        replace val99 = 1 if val0==`i'
        }
    上記は、次のように記述しても同じである(上が「varlist」で、下が「numlist」となることに注意。)。
    例)foreach x of varlist ID Year Date {
        replace `x'=0 if `x'==.
        replace val99 = 1 if val0=="`x'"
        }
    例)foreach i of numlist 2 5 17 {
        replace val`i'=0 if val`i'==.
        replace val99 = 1 if val0==`i'
        }
    頭文字で共通する変数列(「val1,val2,val3」や「x1,x11,x100」など)を選ぶ方法 ※一つだの変数(「ID」など)も並記できる。
    例)foreach x of varlist var* x* ID {
        replace val`x'=0 if val`x'==.
        replace val99 = 1 if val0==`x'
        }

平均の表を作成

タイプ2に関係する変数hogehogeの平均の表を作成する。

table gyou retsu if type==2, contents(mean hogehoge)

データの結合

  • データが一部しか共通しない場合(※もちろん全てが共通していても使える)
     主データと追加データに共通する変数については、(「update」オプションを付けない場合には)主データが採用される。空白(欠損値)の部分であっても主データが優先される。
     「update」オプションを付けると、空白(欠損値)の場合のみ追加データの値が採用される。
    use 【追加データ】
    sort 【両データで共通する変数名】
    save 【追加データ】
    clear
    use 【主データ】
    sort 【両データで共通する変数名】
    merge 【両データで共通する変数名】 using 【追加データ】, update
     
    例)use data2.dta
        sort ID
        save data2.dta
        clear
        use data1.dta
        sort ID
        merge ID using data2.dta, update
     
    「update」オプションを利用しない場合には、次のように省略して記述できる。
    例)use data2.dta
        sort ID
        save data2.dta
        use data1.dta, clear
        merge ID using data2.dta, sort
  • 3つ以上のデータを結合する。
    use 【追加1データ】
    sort 【3つのデータで共通する変数名】
    save 【追加1データ】
    clear
    use 【追加2データ】
    sort 【3つのデータで共通する変数名】
    save 【追加2データ】
    clear
    use 【主データ】
    sort 【3つのデータで共通する変数名】
    merge 【3つのデータで共通する変数名】 using 【追加1データ】, update
    drop _merge
    sort 【3つのデータで共通する変数名】
    merge 【3つのデータで共通する変数名】 using 【追加2データ】, update
    drop _merge
     
    例)use data2.dta
        sort ID
        save data2.dta
        clear
        use data3.dta
        sort ID
        save data3.dta
        clear
        use data1.dta
        sort ID
        merge ID using data2.dta, update
        drop _merge
        sort ID
        merge ID using data3.dta, update
        drop _merge
     
    「update」オプションを利用しない場合には、次のように省略して記述できる。
    例)use data2.dta
        sort ID
        save data2.dta
        use data3.dta, clear
        sort ID
        save data3.dta
        use data1.dta, clear
        merge ID using data2.dta, sort
        drop _merge
        merge ID using data3.dta, sort
        drop _merge

Tips

  • log をとる。
    log using log.txt, replace text
  • 回帰結果の表をtex形式にする(要outtex.ado)。
    outtex, level detail
  • 表をtex形式にする。
    latab var_name if jogai == "n" & group=="G" & sp==1
  • 数値にlabelを付ける。
    label define new_var_name 0 "0\%" 1 "0\%-16.7\%" 2 "16.7\%-33.3\%" 3 "33.3\%-50\%" 4 "50\%-"
    label values var_name new_var_name
  • トービット分析の例
    tobit offer_rate sp yd r2 r3 if jogai == "n" & group=="G" & member == 1 , ll(0) ul(1)

パネル

別ページにまとめる。

オンライン・マニュアル類


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2017-05-06 (土) 15:02:54 (1883d)