I have macro which creates multiple datasets and not always the same datasets are created. How can I keep only existing datasets names into a SAS variable and SET all of them together?
For example:
Data A;
A=1;
Run;
Data C;
C=1;
Run;
/*Here we will have an error as the dataset B does not exist*/
DATA All_Data;
Set a b c;
run;
/*My idea was storage all the existing datasets (A and C) and do something like this*/
DATA All_Data;
Set &existing_datasets.;
run;
How do I read the existing datasets and store their names into a variable?
Thanks in advance.
Or use a naming convention. Name all your temporary datasets with _CombinedA, _CombinedB etc
Then when you’re trying to combine the data you can use the wildcard : to set the data.
data want;
set _combined: ;
run;
query dictionary tables into maco var and call the macrovar in set statements- your safe bet
proc sql;
select memname into :dsnlist separated by ' '
from sashelp.vtable /*or dictionary.tables*/
where libname='YOUR_LIBNAME';/*your lib where the datasets are stored */
quit;
data want;
set &dsnlist;
run;
Or use a naming convention. Name all your temporary datasets with _CombinedA, _CombinedB etc
Then when you’re trying to combine the data you can use the wildcard : to set the data.
data want;
set _combined: ;
run;
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
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.