DATA Step, Macro, Functions and more

List variables with common prefix in array

Reply
Frequent Contributor
Posts: 138

List variables with common prefix in array

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.

 

SAS Super FREQ
Posts: 288

Re: List variables with common prefix in array

[ Edited ]

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;

PROC Star
Posts: 7,467

Re: List variables with common prefix in array

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

Ask a Question
Discussion stats
  • 2 replies
  • 135 views
  • 1 like
  • 3 in conversation