With the below program, i can only get 'book' for the macro variable.
May I know how to get macro variable 'orderedvars' that is 'book,car,ship,ball'? Anyone can help, thanks.
data sample;
input var1 $ var2 $ var3 $ var4 $;
cards;
book car ship ball
;
run;
proc sql noprint;
select distinct *
into : orderedvars separated by ','
from sample;
quit;
%put &orderedvars;
data _null_;
call symputx('ordervars','book,car,ship,ball');
run;
OR
Transpose your data set sample and work from there.
OR
Read the four words into a single column in your data step.
data sample; input var1 $ var2 $ var3 $ var4 $; call symputx('orderedvars',catx(',',of var:)); cards; book car ship ball ; run; %put &orderedvars;
Thats likely the easiest way, into takes a column of observations not an array of variables.
PROC SQL could use the CATX function as well, except for the abbreviated variable list (which may be irrelevant anyway because your real variables are named differently):
proc sql noprint;
select catx(',', var1, var2, var3, var4)
into : orderedvars
from sample;
quit;
Yes, I was avoiding that as you can't use arrays of variables in sql, so:
select catx(',',of var:)
Thats why I went with the datastep, just easier. SQL is only really columns of data, not arrays of variables.
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.