以下のSASコードを記述して、すべてのカテゴリ変数のダミー変数を作成しました。しかし、コードは私に望みの結果を与えてくれません。データセットsas内のカテゴリ変数のダミー変数を作成するためのマクロの作成
作業ライブラリ#に設定されたデータのコピーを作成する/#/データ内の変数の名前と型を取得
/#が設定
libname eco "Z:\Globe\Call Data Modeling";
data model_data;
set eco.em_save_train;
run;
proc contents data= model_data out= var_names(keep=name type)noprint;
run;
/#を作成マクロを使用してダミー変数を作成する#/
%macro cat(indata, variable);
proc sql noprint;
select distinct &variable. into :mvals separated by '|'
from &indata.;
%let mdim=&sqlobs;
quit;
data &indata.;
set &indata.;
%do _i=1 %to &mdim.;
%let _v = %scan(&mvals., &_i., |);
if &variable. = &_v. then &variable.&_v. = 1; else &variable.&_v = 0;
%end;
run;
%mend;
/#マクロを呼び出し、データセット名と変数を渡すタイプに基づいて名前を指定します。タイプ= 2、それは変数#/
data _null_;
set var_names;
if type=2 then call execute('%cat(model_data,'||name||')');
run;
SASは、ダミーが必要とされているほとんどの手順でCLASSステートメントを持っている、とあなたはダミーを作成する必要がないときSASは、あまりにもそのためのprocesuresを持っています。 PROC GLMMODとPROC TRANSREGは良いスタート地点です。 –
望ましくない結果は何ですか?さらに重要なのは、望ましい結果は何か? –
http://blogs.sas.com/content/iml/2016/02/22/create-dummy-variables-in-sas.html – Reeza