実践編②:データクリーニング〈統計解析ソフト 〜基本〉
第6章 変数を作成する,削除する
Point
- 解析用の変数作成はStata上で行う
- コマンドを組合わせると大抵の変数は作成できる
- まずは「generate」,「replace」,計算などで変数作成する
本章では,データ収集ツールから取り込んだデータを基に,新しい変数を作成するための基本的なコマンドを紹介します.また,単純な計算処理などから新たな変数を生成する方法についても取り上げます.
変数の作成は,データクリーニングにおいて非常に重要な作業の1つです.以下に紹介するコマンドを習得すれば,ほとんどの変数作成が可能になるでしょう.以下のコマンドが使用できるようになれば,高度な変数作成も含めておおよその変数作成ができるようになります.
|
実践編② 第6章 変数を作成する,削除する コマンド入力の基本形式 generate:新しい変数をつくる -四則演算 cond関数:条件式に合致するか否かで値を振り分ける replace:変数の値を別の値に置き換える drop:ある変数を削除する keep:ある変数を残す
第7章 変数名と変数の値にラベルを付ける label:変数値の表示名を変える
第8章 高度な変数作成 egen:「generate」の拡張コマンド,「function」と併せて使う
第9章 グループ毎に集計,新しい変数を作成する:bysort bysort:指定した変数ごとにコマンドを実行する
第10章 日付データ date(function):文字型の日付を,日付のデータと認識させる
第11章 時刻データ clock:文字列変数を時刻変数に置き換える
第12章 文字列データ destring, tostring:文字型↔数字型
|
1 コマンド入力の基本形式
基本コマンド
コマンド⬚変数⬚条件⬚(if)⬚重み付けなど,⬚オプション
詳細は実践編②-第1章をご確認ください.ほとんどのコマンドはフルスペルで入力する必要はなく,省略して入力できます.本書ではフルスペルで記載し,最低限必要な部分には下線を引いています.コマンドは基本的にはすべて小文字で,半角スペースで区切ります.if で条件を付ける際は,以下の比較演算子を用います.
|
比較演算子 a⬚==⬚b aとbは等しい a⬚!=⬚b aとbは等しくない a⬚<⬚b aはbより小さい a⬚<=⬚b aはb以下 a⬚>⬚b aはbより大きい a⬚>=⬚b aはb以上 ※ a⬚=⬚b bの値をaに代入するという意味になる |
カンマ(,)以降はオプションになります.オプションとは,コマンドの基本的な動作に追加指定を加えるものです.オプションと「,」の間に半角スペース「⬚」は必須ではありませんが,半角スペースの入れ忘れなどでエラーを起こすことが多いため,本書ではわかりやすく統一するために,半角スペースを入れています.他,コードを読みやすくするために必須ではない箇所にも半角スペースを入れています.
2 generate:新しい変数をつくる -四則演算
基本コマンド
generate⬚新変数名⬚=⬚値
1)数値
例1)新しい変数「new」を作成して,すべての行に1を代入する.
サンプルコマンド
generate⬚new⬚=⬚1
作成後は必ず「browse」や「tabulate」,「list」で確認しましょう.
「browse」はデータエディタ(ブラウズ)が開かれます(図1).
サンプルコマンド
browse⬚new
「tabulate」は図2のように結果ウインドウに表で示されます.
サンプルコマンド
tabulate⬚new,⬚missing
「list」では結果ウインドウに一覧で表示されます.一部だけを確認すればよいときは,「in⬚1/10」(一番上から10件)のように表示件数を指定することができます(図3).
サンプルコマンド
list⬚new⬚in⬚1/10
2)文字列
「generate」コマンドを使って文字列変数を作成するには,値にダブルクォーテーション("")で囲んだ文字列を指定します.
例2)新しい変数「hospital」に,文字列「AAA hospital」を代入する.
サンプルコマンド
generate⬚hospital⬚=⬚"AAA⬚hospital"
list⬚hospital⬚in⬚1/20
「list」を使って,変数が作成されたかどうかを確認します(図4).「list」は並び替えによって値が変わります.今回の「new」や「hospital」はどの行も同じ値なので,並び替えによらず同じ結果になります.
例3)body mass indexを計算し新しい変数(bmi2)として,代入する
四則演算は以下のコマンドを使って,Excelと似たような入力をして行います.
「bmi2」という変数名を作成し,その行のそれぞれの「weight」,「height」を使って計算した値を代入します.BMIの身長はmですが,データでは単位がcmなので,10000倍しています.
サンプルコマンド
generate⬚bmi2⬚=⬚cweight/cheight^2*10000
|
四則演算 +:加算 -:減算 *:乗算 /:除算 ^:n乗〔例:3^2(32)〕 |
例1と同様に,作成した変数が正確に作られているか,複数個の行のデータを必ず確認します.
サンプルコマンド
list⬚cweight⬚cheight⬚bmi2⬚in⬚1/20
また,「summarize」などで変数の要約を把握することも大切です.オプションの「detail」をつけましょう(図6)(実践編②-第5章).
サンプルコマンド
summarize⬚bmi2,⬚detail
3 cond関数:条件式に合致するか否かで値を振り分ける
基本コマンド
generate⬚新変数名⬚=⬚cond(条件,⬚a,⬚b)
条件式が正ならa, それ以外のときはbに振り分けられます.
例4)新しい変数seibetsuを作成して,cmaleが1なら1,それ以外なら2に振り分ける
サンプルコマンド
generate⬚seibetsu⬚=⬚cond(cmale⬚==⬚1,⬚1,⬚2)
browse⬚seibetsu⬚cmale
cmaleは数値で入力されているので,上記のコマンドでよいですが,文字列で入力されている変数の場合は,"1"のようにダブルクォーテーションで括ってください.
cmale=1がseibetsu=1になり,cmale=0はseibetsu=2になっているのが確認できます(図7).
サンプルコマンド
tabulate⬚seibetsu⬚male
表にすると,一目でcmale=1がseibetsu=1になり,cmale=0はseibetsu=2に変換できていることが確認できます(図8).
