Thank you for your help, I managed to write my code. Here it is for future reference or anybody that it could help %let SCENARIOS = S0 S1 S2; %let REMOVE_LIST = REMOVE0 REMOVE1 REMOVE2; %MACRO REMOVE_VARS_W_MISSING_VALUES ( FIRST_ROW = , TABLES_INPUT= , REMOVE_LIST= ); %do i=1 %to %sysfunc(countw(&TABLES_INPUT.)); proc summary data=USERLIB.%scan(&TABLES_INPUT.,&i.)(firstobs=&FIRST_ROW.); var _NUMERIC_; output out=MISSING_COUNTS (drop=_TYPE__FREQ_)nmiss=; run; proc transpose data=MISSING_COUNTS out=TRANSPOSED_COUNTS; var _NUMERIC_; run; proc sql; select distinct _NAME_ into : %scan(&REMOVE_LIST.,&i.) separated by " " from TRANSPOSED_COUNTS where col1 > 0 and _NAME_ not = "_FREQ_"; quit; %end; %do i=1 %to %sysfunc(countw(&TABLES_INPUT.)); data USERLIB.%scan(&TABLES_INPUT.,&i.)_MOD; set USERLIB.%scan(&TABLES_INPUT.,&i.)(drop=&REMOVE0. &REMOVE1. &REMOVE2.); run; %end; %MEND; %REMOVE_VARS_W_MISSING_VALUES ( FIRST_ROW = 6, TABLES_INPUT= &SCENARIOS., REMOVE_LIST= &REMOVE_LIST. );
... View more