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.
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.