## Conditional processing with many conditions (if then else, or an array)

Solved
Frequent Contributor
Posts: 110

# Conditional processing with many conditions (if then else, or an array)

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

Accepted Solutions
Solution
‎11-24-2015 09:29 AM
Super User
Posts: 23,776

## Re: Conditional processing with many conditions (if then else, or an array)

[ Edited ]

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;``````

All Replies
Solution
‎11-24-2015 09:29 AM
Super User
Posts: 23,776

## Re: Conditional processing with many conditions (if then else, or an array)

[ Edited ]

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;``````
Super User
Posts: 9,599

## Re: Conditional processing with many conditions (if then else, or an array)

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;```
🔒 This topic is solved and locked.