SASでダミー変数を作成するためのプログラムです。
/* n個のカテゴリを持つ変数についてダミー変数を作成する。*/
array 配列名 {n};
do i = 1 to n;
配列名(i) = (元変数=i);
if 元変数 = . then 配列名(i) = .;
end;
/* チェック */
proc freq;
tables 元変数 * ダミー変数1 * … * ダミー変数n/list missing;
run;
arrayの後に配列名を指定します。これはダミー変数として使用する変数名から番号を除いたものにすると楽です。すぐ後ろに要素数を指定すると、自動的に番号付きの変数名を作成してくれます。
(元変数=i)は元変数がiの値をとったときに1、そうでないときに0の値を割り当ててくれます。
欠損値にも配慮する必要があります。
喫煙状況(dosmokex)は[1]現在吸っている、[2]以前は吸っていたがやめた。[3]ほとんど/まったく吸ったことがない、という3つのカテゴリをもつ変数です。この変数についてdm_dosmoke1, dm_dosmoke2, dm_dosmoke3というダミー変数を作成してみましょう。
array dm_dosmoke {3};
do i = 1 to 3;
dm_dosmoke(i) = (dosmokex=i);
if dosmokex = . then dm_dosmoke(i) = .;
END;
proc freq;
tables dosmokex * dm_dosmoke1 * dm_dosmoke2 * dm_dosmoke3/list missing;
run;