I have three macro variables that contai some dynamic values - the number of values or the values themselves may change in the script flow.
%let x = 1 2 5; %let y = 10 15; %let z = 5 15 25 60 80;
I need to create all possible combinations out of these variables and save the data - it would contain 3*2*5 = 30 rows. I looked at proc plan and it doesn't seem to ba able to do this, not directly at least. Also tried this:
data GridSearch;
do a = SYMGET('x');
do b = SYMGET('y');
do c = SYMGET('z');
output;
end;
end;
end;
run;
Apparently this is not the correct way to reference maro varaible as it returns the as text rather than lsit of values.
Any ideas?
Well, to answer your question first, do loops need to, when a list of values is provided, be separated by commas not spaces:
%let x = 1,2,5; %let y = 10,15; %let z = 5,15,25,60,80; data GridSearch; do a = &x.; do b = &y.; do c = &z.; output; end; end; end; run;
Now, from my side, I would increment the indentation for each loop to make the code readable.
Well, to answer your question first, do loops need to, when a list of values is provided, be separated by commas not spaces:
%let x = 1,2,5; %let y = 10,15; %let z = 5,15,25,60,80; data GridSearch; do a = &x.; do b = &y.; do c = &z.; output; end; end; end; run;
Now, from my side, I would increment the indentation for each loop to make the code readable.
%let x = 1 2 5; %let y = 10 15; %let z = 5 15 25 60 80; data want; do x=%sysfunc(translate(&x,%str(,),%str( ))); do y=%sysfunc(translate(&y,%str(,),%str( ))); do z=%sysfunc(translate(&z,%str(,),%str( ))); output; end; end; end; run;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.
Find more tutorials on the SAS Users YouTube channel.