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

Hello,

 

I have 35 variables for 35 possible diagnosis codes a patient can have. I have a list of diagnoses of interest and need to "blank out" diagnoses which are not on the list. The array I've coded doesn't produce an error message, but I noticed in the output that it appears to be blanking out all the diagnoses, including the ones of interest.

 

Here's an example of the code:

 

data base1;
set base;
array diag_code diag_code_01 - diag_code_35;
do i = 01 to dim(diag_code);
if substr(diag_code(i),1,4) not in ("T652")

or substr(diag_code(i),1,3) not in ("O46")
then diag_code(i) = ' ';
end;
drop i;
run;

Any suggestions for how to fix this? 

 

Thanks so much for your advice!

 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
2 REPLIES 2
Reeza
Super User

I think you need AND rather than OR in your condition.

Astounding
PROC Star

Yes, changing AND to OR would work.  This simplification should also work:

 

if diag_code(i) not in : ('T652', 'O46') then diag_code(i) = ' ';

 

Remember then colon !

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

Register Now

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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