[Stataによるデータ分析入門]Stataで文字列のカテゴリー変数を数値に変換する

Stataでは、カテゴリー変数に文字情報が含まれていると、何かと不便です。文字情報が含まれたカテゴリー変数を、数値によるカテゴリー変数に変換する方法について紹介します。

背景

Stataで、回帰分析の際にカテゴリー変数(仮にcategoryという変数とします)を基にしたダミー変数を導入したい場合、reg y x i.categoryと入力することでカテゴリーごとのダミー変数を導入してくれます。またaregやreghdfeコマンドでareg y x,absorb(category)と入力して同じ処理を行うこともできます。しかし、カテゴリー変数に文字情報が含まれているとエラーが出てしまうので、あらかじめ数値のみで構成されるカテゴリー変数に作り替えておく櫃王があります。
 たとえば、都道府県prefectureという変数に、Hokkaido, Aomori,...のように文字情報で都道府県名が含まれているような場合、gen pref_id=1 if prefecture=="Hokkaido" replace pref_id=2 if prefecture=="Aomori"のように一つずつ数値に置き換えるのは大変です。

下準備

Stataに用意されている自動車のデータauto.dtaに含まれるmake(メーカー名)を数値によるカテゴリー変数に変換してみましょう。

auto.dtaはコマンド・ウインドウにsysuse auto.dta,clearと入力して呼び出します。続いてtab makeと入力すると文字列で構成されていることがわかります。

画像1

これを gen make_id=0, replace make_id=1 if make=="AMC concord"という具合に数値に変換していくこともできますが、カテゴリーが多いと気が遠くなる作業になります。こういうときには以下の2つのコマンドが便利です。

encodeコマンドを利用する

以下のコマンドではmakeのカテゴリごとに、make_id1に1から始まる数値が入ります。
encode make, gen (make_id1)

ege&groupコマンドを利用する

以下でも同様の結果が得られます。
egen make_id2=group(make)

実行例は以下の通りです。

画像2

以下はブラウズしてみたところです。encodeコマンドで作成したmake_id1には元の文字列がラベルとして付与されています。

画像3

※本記事はStataによるデータ分析入門第3版のWeb Appendixです。

Stataによるデータ分析入門第3版のWEB補論の一覧はこちら。


この記事が気に入ったらサポートをしてみませんか?