Listing variables with common prefix supposed to work with "P0701--P0703" I thought. But it doesn't run when put it in the below context.
Any suggestions?
data want; set have;
array m Code_1-Code_24;
do over m;
if m in ("P0701","P0702","P0703","P0714","P0715","P0716", "P0717","P0718") then b=1; else
if m in ("P0721","P0722","P0723","P0724","P0725","P0726", "P0731","P0732","P0733","P0734","P0735","P0736","P0737","P0738","P0739") then b=2; else
if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3; else
if m in ("P0700","P0720") then b=4;
end;
run;
Thank you.
Not sure what you're asking. Both of the following will satisfy your example:
data want; set have; array m $ Code_1-Code_24; do over m; if m in ("P0701","P0702","P0703","P0714","P0715","P0716", "P0717","P0718") then b=1; else if m in ("P0721","P0722","P0723","P0724","P0725","P0726", "P0731","P0732","P0733","P0734","P0735","P0736","P0737","P0738","P0739") then b=2; else if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3; else if m in ("P0700","P0720") then b=4; end; run; data want; set have; array m $ Code_1-Code_24; do over m; if "P0701" le m le "P0718" then b=1; else if "P0721" le m le "P0739" then b=2; else if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3; else if m in ("P0700","P0720") then b=4; end; run;
Art, CEO, AnalystFinder.com
Those are character strings not variables. This will work for one of your statements.
if m in (%macro m; %do i = 701 %to 703; "P0&i" %end; %do i = 714 %to 718; "P0&i" %end; %mend;%m) then b=1;
Not sure what you're asking. Both of the following will satisfy your example:
data want; set have; array m $ Code_1-Code_24; do over m; if m in ("P0701","P0702","P0703","P0714","P0715","P0716", "P0717","P0718") then b=1; else if m in ("P0721","P0722","P0723","P0724","P0725","P0726", "P0731","P0732","P0733","P0734","P0735","P0736","P0737","P0738","P0739") then b=2; else if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3; else if m in ("P0700","P0720") then b=4; end; run; data want; set have; array m $ Code_1-Code_24; do over m; if "P0701" le m le "P0718" then b=1; else if "P0721" le m le "P0739" then b=2; else if m in ("P07","P070","P071","P0710","P072","P073","P0730") then b=3; else if m in ("P0700","P0720") then b=4; end; run;
Art, CEO, AnalystFinder.com
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.