0
我已經編寫了以下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;
/#調用宏並傳遞數據集名稱和變量e名稱,基於類型。如果type = 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