i have a database that looks like this
id | diag 1 | diag2 | diag3 | diag4 | diag5 | diag7 | diag8 | diag9 |
1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
3 | 0 | 0 | 0 | 0 | 1 | 1 | ||
4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
I need to create a new_var that is equals to 1 if either one of the 'diag's have a value of 1.
I did it by summing the diags and having the new_var = 1 if sum(diag1-diag24)>=1.
Is there another way to do this without typing a lot? Also, my technique only works if the observantions are 1s and 0s. I could do something like this if my obs values were different than 1 --> diag1=2 or diag2=1 or diag3=5....and so on then new_var=1. This isn't very practical when i have many 'diag's, so how could I do this without typing a lot?
Finding only a 1 (not a 2 or a 5) can be done with only mild complications. The CAT family of functions works on numeric as well as character values. So you could code:
if index(cats(of diag1-diag24), '1') > 0;
If your data contains two-digit numbers (so you need to find "1" but not "10"), it can still be done but gets mildly more complex.
I think your solution is solid, though you would probably type sum(of diag1-diag24)>=1 🙂
good catch! thanks 😉
Finding only a 1 (not a 2 or a 5) can be done with only mild complications. The CAT family of functions works on numeric as well as character values. So you could code:
if index(cats(of diag1-diag24), '1') > 0;
If your data contains two-digit numbers (so you need to find "1" but not "10"), it can still be done but gets mildly more complex.
For a very few character shorter typing:
new_var = (index(catt(of diag:),'1')>0);
sum(of diag1-diag9) >=1 OR max(of diag1-diag9) >=1 should work.
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 16. Read more here about why you should contribute and what is in it for you!
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.
Select SAS Training centers are offering in-person courses. View upcoming courses for: