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

I have a data set below:

Patient ID

Drug 1

Drug 2

Drug 3

Drug 4

Drug 5

Drug 6

Drug 7

1

Statin

Statin

BB

 

ACEI

 

Statin

2

 

BB

 

BB

BB

 

 

3

Statin

 

BB

 

 

BB

 

4

ACEI

Statin

 

ACEI

 

 

ACEI

5

 

ACEI

BB

 

 

 

 

6

Statin

 

 

Statin

 

Statin

 

7

BB

 

 

 

 

 

 

 How do I create another variable (Total med) where:

 

If Statin and BB and ACEI are in at least one of the 7 columns, then Total Med = Triple

If ONLY Statin and BB are in at least one of 7 columns, then Total Med = Double_SB

If ONLY Statin and ACEI are in at least one of 7 columns, then Total Med = Double_SA

If ONLY Statin appeared in at least one of 7 columns, then Total Med = Statin alone

If ONLY BB appeared in at least one of 7 columns, then Total Med = BB alone

If ONLY ACEI appeared in at least one of 7 columns, then Total Med = ACEI alone

1 ACCEPTED SOLUTION

Accepted Solutions
PaigeMiller
Diamond | Level 26

Something like this in a data step

 

data want;
    set have;
    length totalmed $ 15;
    /* If Statin and BB and ACEI are in at least one of the 7 columns, then Total Med = Triple */
    if whichc('Statin',of drug:)>0 and whichc('BB',of drug:)>0 and whichc('ACEI',of drug:)>0 then totalmed='Triple';
    /* If ONLY Statin and BB are in at least one of 7 columns, then Total Med = Double_SB */
    if whichc('Statin',of drug:)>0 and whichc('BB',of drug:)>0 and whichc('ACEI',of drug:)=0 then totalmed='Double_SB';
    /* You type the rest */
run;
    
--
Paige Miller

View solution in original post

3 REPLIES 3
PaigeMiller
Diamond | Level 26

Something like this in a data step

 

data want;
    set have;
    length totalmed $ 15;
    /* If Statin and BB and ACEI are in at least one of the 7 columns, then Total Med = Triple */
    if whichc('Statin',of drug:)>0 and whichc('BB',of drug:)>0 and whichc('ACEI',of drug:)>0 then totalmed='Triple';
    /* If ONLY Statin and BB are in at least one of 7 columns, then Total Med = Double_SB */
    if whichc('Statin',of drug:)>0 and whichc('BB',of drug:)>0 and whichc('ACEI',of drug:)=0 then totalmed='Double_SB';
    /* You type the rest */
run;
    
--
Paige Miller
FreelanceReinh
Jade | Level 19

Hello @Sam1010 and welcome to the SAS Support Communities!

 

So, basically, each of the possible combinations of the three drug classes corresponds to one value of the new variable. Then I would also define the cases "none of the three" and "only ACEI and BB" (the latter occurs for patient no. 5; how about denoting this combination as "Double_AB"?) and use the CHOOSEC function:

data have;
input Patient_ID (Drug1-Drug7) ($);
cards;
1 Statin Statin BB . ACEI . Statin
2 . BB . BB BB . . 
3 Statin . BB . . BB . 
4 ACEI Statin . ACEI . . ACEI 
5 . ACEI BB . . . . 
6 Statin . . Statin . Statin . 
7 BB . . . . . .
;

data want;
set have;
array d[*] drug:;
length Total_Med $12;
Total_Med=choosec(1 + ('ACEI' in d) + 2*('BB' in d) + 4*('Statin' in d),
                  ' ','ACEI alone','BB alone','Double_AB???','Statin alone','Double_SA','Double_SB','Triple');
run;

The first argument of the CHOOSEC function is a number in {1, 2, ..., 8} and uniquely determines the combination (remember the binary number system). The subsequent strings describe these combinations.

sas-innovate-2024.png

📢

ANNOUNCEMENT

The early bird rate has been extended! Register by March 18 for just $695 - $100 off the standard rate.

 

Check out the agenda and get ready for a jam-packed event featuring workshops, super demos, breakout sessions, roundtables, inspiring keynotes and incredible networking events. 

 

Register now!

From SAS Users blog
Want more? Visit our blog for more articles like these.
5 Steps to Your First Analytics Project Using SAS

For SAS newbies, this video is a great way to get started. James Harroun walks through the process using SAS Studio for SAS OnDemand for Academics, but the same steps apply to any analytics project.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 3 replies
  • 329 views
  • 3 likes
  • 3 in conversation