- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
Paige Miller
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.