Hi, I am new to SAS and am using 9.2.
I would like to read in variables from a dataset, based on a %let statement. A simplification of the issue follows, but I get an error.
I'd appreciate someone's help.
Thanks,
Brent Fulton
UC Berkeley
%let type=color;
if &type='color' then do;
%let varlist=red blue;
end;
if &type='pattern' then do;
%let varlist=solid stripe;
end;
run;
data data1 (keep= &varlist);
set datalib.data1;
run;
For something so simple you can also just use a DATA _NULL_ step and not bother with macro language.
%let type=color;
%let varlist=;
data _null_;
if "&type" = 'color' then call symput('varlist','red blue');
if "&type" = 'pattern' then call symput('varlist','solid stripe');
run;
data data1 (keep= &varlist);
set datalib.data1;
run;
Maybe it will help you, but NOTE that you can use %if statement only in %macro xxx; .... %mend xxx; statement
%macro mMain;
%let type=color;
%if &type=%str(color) %then %do;
%let varlist=red blue;
%end;
%if &type=%str(pattern) %then %do;
%let varlist=solid stripe;
%end;
data data1(keep= &varlist);
set datalib.data1;
run;
%mend mMain;
%mMain
For something so simple you can also just use a DATA _NULL_ step and not bother with macro language.
%let type=color;
%let varlist=;
data _null_;
if "&type" = 'color' then call symput('varlist','red blue');
if "&type" = 'pattern' then call symput('varlist','solid stripe');
run;
data data1 (keep= &varlist);
set datalib.data1;
run;
Available on demand!
Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.
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.