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
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;
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;
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;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.