Hi there, I am writing a macro loop to run univariate tests and output test 3 results to datasets. This loop is intended for a large dataset where I have too many variables to include in individual macro calls. I want to run 2 different modeling frameworks based on the format applied to numeric variables. Right now, the format (i.e., &fmtlist) is not being considered and my 0/1 variables that have the Y. format (0="no", 1="yes") applied are not being run within the logistic regression PROC. Any ideas for why this is being ignored?
I do not get any error messages, but my results are incorrect as all my "numeric" variables are being fed into the PROC GLM, despite having my Y. format applied.
Additionally, I would like to append all the results together into one dataset. I need to figure that out, once I get the correct results to be output.
Thanks!
proc format library = form.formats; value y .= 'Missing' 0= 'No' 1= 'Yes' ; run; proc contents data = x varnum out=variable_list; run;
data variable_list;
length format $1.;
set variable_list;
run;
proc sql noprint select name,type,format
into :varlist separated by ' ',
:typelist separated by ' ',
:fmtlist separated by ' '
from variable_list;
quit;
%let cntlist = &sqlobs;
%macro univar;
%do i=1 %to %cntlist;
%if %scan(&typelist, &i)=1 %then %do;
%if %scan(&fmtlist, &i)="Y" %then %do;
proc logistic data = &data;
format %scan(&varlist, &i) y.;
class %scan(&varlist, &i) (ref=FIRST) / param = ref;
model outcome(event="Y") = %scan(&varlist, &i);
ods output modelANOVA = nfit&i;
run;
%end;
%else %if %scan(&fmtlist, &i) ne "Y" %then %do;
proc glm data = &data;
class outcome (ref="N") / param = ref;
model %scan(&varlist, &i) = exposure;
ods output modelANOVA = cfit&i;
quit;
%end;
%end;
%else %if %scan(&typelist, &i)=2 %then %do;
proc logistic data = &data;
class %scan(&varlist, &i) (ref=FIRST) / param = ref;
model outcome(event="Y") = %scan(&varlist, &i);
ods output modelANOVA = cfit&i;
run;
%end;
%end;
%mend univar;
%univar;
first values from the log: %put &fmtlist; $ $ Y $ $ Y Y
... View more