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;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.