Я написал следующий код 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;
/# вызова макроса и передавая имя набора данных и variabl e name, в зависимости от типа. если тип = 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