BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
sarahsasuser
Quartz | Level 8

Hi All,

 

I need help with some code using either if, then, else, or an array.

 

I have a data set with many medication fields (wide data set). They are labeled medication1-medication29. I want to create a new variable called "code" that is equal to 1, if any of the 29 medications = 258. Then if medications =225 or 265 then code =2.

 

Here is some sample code I was playing with:

if (medication1 or medication2 or medication3 or medication4 or medication5...medication29)=258 then code=1;

else if (medication1 or medication2 or medication3 or medication4 or medication5...medication29)=225 or (medication1 or medication2 or medication3 or medication4 or medication5...medication29)=265 then code=2;

...

 

Thanks!

Sarah

 

1 ACCEPTED SOLUTION

Accepted Solutions
Reeza
Super User

Look up the WHICHN or WHICHC functions depending on if your variable is character or numeric.

Assuming Numeric:

array med(29) medication1-medication29;

if whichn(258, of med(*))>0 then code=1;
else if (whichn(225, of med(*))>0 OR whichn(265, of med(*))>0) then code=2;

View solution in original post

2 REPLIES 2
Reeza
Super User

Look up the WHICHN or WHICHC functions depending on if your variable is character or numeric.

Assuming Numeric:

array med(29) medication1-medication29;

if whichn(258, of med(*))>0 then code=1;
else if (whichn(225, of med(*))>0 OR whichn(265, of med(*))>0) then code=2;
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Just to add, with a do loop over your codes, you don't need all the conditional code either:

data have;
  infile datalines;
  input medication1-medication5;
datalines;
258 34 45 12 67
56 78 45 23 12
78 76 75 225 5
;
run;

data want;
  set have;
  array med{5} medication1-medication5;
  c=1;
  do i=258,225,657,234,123,897,445;
    if whichn(i,of med(*))>0 then code=c;
    c=c+1;
  end;
run;

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 2 replies
  • 1043 views
  • 3 likes
  • 3 in conversation