I defined 15 macro variables like
%let x1=xxx
%let x2=xxx
%let x3=xxx
....
xxx are some variables in my dataset.
I wonder how I can call some of them together in some procedures such as proc sql and proc reg. For example, I can write
proc reg data=new;
model ret = &x1 &x2 &x3 &x4;
run;
Can I shorten this code such as model ret = &x1-&x4? I tried this, but not work.
Thanks.
If you are already running in a macro then use a DO loop.
%do i=1 %to 15 ; &&x&i %end;
Or just make a new macro variable. You still have to type them out but only one time.
%let xall=&x1 &x2 &x3 &x4 &x5 &x6 .......... ;
Or pull the names from the metadata? Watch out for the SCOPE setting.
proc sql ;
select distinct cats('&',name) into : xall separated by ' '
from dictionary.macros
where name like 'X%' and scope = "GLOBAL"
;
quit;
.... var &xall ... ;
some functions and statements allow variable ranges. The rules are not in the macro language
If you are already running in a macro then use a DO loop.
%do i=1 %to 15 ; &&x&i %end;
Or just make a new macro variable. You still have to type them out but only one time.
%let xall=&x1 &x2 &x3 &x4 &x5 &x6 .......... ;
Or pull the names from the metadata? Watch out for the SCOPE setting.
proc sql ;
select distinct cats('&',name) into : xall separated by ' '
from dictionary.macros
where name like 'X%' and scope = "GLOBAL"
;
quit;
.... var &xall ... ;
If their order is the same within dataset . or you could try this.
model ret = &x1 -- &x4?
Ksharp
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.
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.