Hi,
I'm trying to get the P-value for a list of 20+ diffent variables to export to excel. I've set it up in a round-about way, but was wondering if there's someway to simplify it to avoid 1000s of lines of code.
Thank you!
ODS OUTPUT MODELANOVA=OUTPUT;
PROC LOGISTIC DATA=PAT_LIST_FINAL;
CLASS SEX (REF = "0") ;
MODEL CMV_IND = SEX;
WHERE VLBW_YN = 'VLBW' AND VIRAL_YN = 1;
RUN;
PROC PRINT DATA=OUTPUT NOOBS;
RUN;
DATA SEX_P_VLBW;
SET OUTPUT;
RUN;
ODS OUTPUT MODELANOVA=OUTPUT;
PROC LOGISTIC DATA=PAT_LIST_FINAL;
CLASS LOCATE (REF = "0") ;
MODEL CMV_IND = LOCATE;
WHERE VLBW_YN = 'VLBW' AND VIRAL_YN = 1;
RUN;
PROC PRINT DATA=OUTPUT NOOBS;
RUN;
DATA LOCATE_P_VLBW;
SET OUTPUT;
RUN;
ODS OUTPUT MODELANOVA=OUTPUT;
PROC LOGISTIC DATA=PAT_LIST_FINAL;
CLASS HISP (REF = "0") ;
MODEL CMV_IND = HISP;
WHERE VLBW_YN = 'VLBW' AND VIRAL_YN = 1;
RUN;
PROC PRINT DATA=OUTPUT NOOBS;
RUN;
DATA HISP_P_VLBW;
SET OUTPUT;
RUN;
DATA P_VLBW;
SET
SEX_P_VLBW
LOCATE_P_VLBW
HISP_P_VLBW
;
RUN;
Using a macro would shorten the code a bit since the 3 steps prior to the merge are all similar. You can add additional class variables as needed.
%macro repeated(class);
ODS OUTPUT MODELANOVA=OUTPUT;
PROC LOGISTIC DATA=PAT_LIST_FINAL;
CLASS &class. (REF = "0") ;
MODEL CMV_IND = &class.;
WHERE VLBW_YN = 'VLBW' AND VIRAL_YN = 1;
RUN;
PROC PRINT DATA=OUTPUT NOOBS;
RUN;
DATA &class._P_VLBW;
SET OUTPUT;
RUN;
%mend repeated;
*Similar code for each class variable;
%repeated(class=SEX);
%repeated(class=LOCATE);
%repeated(class=HISP);
DATA P_VLBW;
SET
SEX_P_VLBW
LOCATE_P_VLBW
HISP_P_VLBW
;
RUN;
Using a macro would shorten the code a bit since the 3 steps prior to the merge are all similar. You can add additional class variables as needed.
%macro repeated(class);
ODS OUTPUT MODELANOVA=OUTPUT;
PROC LOGISTIC DATA=PAT_LIST_FINAL;
CLASS &class. (REF = "0") ;
MODEL CMV_IND = &class.;
WHERE VLBW_YN = 'VLBW' AND VIRAL_YN = 1;
RUN;
PROC PRINT DATA=OUTPUT NOOBS;
RUN;
DATA &class._P_VLBW;
SET OUTPUT;
RUN;
%mend repeated;
*Similar code for each class variable;
%repeated(class=SEX);
%repeated(class=LOCATE);
%repeated(class=HISP);
DATA P_VLBW;
SET
SEX_P_VLBW
LOCATE_P_VLBW
HISP_P_VLBW
;
RUN;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.