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

Hi Community,

 

I hoping you could help me determine how to create and compute 2 new summary variables that capture the total number of contacts based on provider type (MD or Social worker (SW)). The 2 new variables need to be continuous. As you can see in the table below, study_id 1001 received a total of 8 contacts during the follow-up period: 6 MD & 2 SW. I would to write a SAS code to create and compute the 2 variables (MD_tot and SW_tot). Please help or point me in the right direction.

Thanks so much!

 

Data set: 2250 observations

Total # variables in data set: 138

Variables related to this question: (in table below)

Variables related to this question are coded as: Con1-Con8 (1 =MD, 2 =SW; binary)

New variables I'd like to create: count of total Con1-Con8 by provider contact. These will be continuous variables

 

Sample subset of data set

study_idcon_totcon1con2con3con4con5con6con7con8MD_totSW_tot
1001811111221??
1002212      ??

 

 
 
 
 

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
biopharma
Quartz | Level 8

Does this work for you?

data have ;
   input study_id con_tot con1 con2 con3 con4 con5 con6 con7 con8 ;
   cards ;
1001 8 1 1 1 1 1 2 2 1		
1002 2 1 2 . . . . . .		
;
run ;

data want ;
   set have ;
   array _con (*) con1 - con8 ;
   do _n_ = 1 to dim(_con) ;
      md_tot = sum(md_tot,(_con(_n_)=1)) ;
      sw_tot = sum(sw_tot,(_con(_n_)=2)) ;
   end ;
run ;

View solution in original post

4 REPLIES 4
biopharma
Quartz | Level 8

Does this work for you?

data have ;
   input study_id con_tot con1 con2 con3 con4 con5 con6 con7 con8 ;
   cards ;
1001 8 1 1 1 1 1 2 2 1		
1002 2 1 2 . . . . . .		
;
run ;

data want ;
   set have ;
   array _con (*) con1 - con8 ;
   do _n_ = 1 to dim(_con) ;
      md_tot = sum(md_tot,(_con(_n_)=1)) ;
      sw_tot = sum(sw_tot,(_con(_n_)=2)) ;
   end ;
run ;
ChrisNZ
Tourmaline | Level 20

Or:

data WANT;
   set HAVE ;
   MD_TOT = lengthn(compress(catt(of CON1-CON8),' .2'));
   SW_TOT = lengthn(compress(catt(of CON1-CON8),' .1'));  
run;
Kimberly09
Fluorite | Level 6
Thanks so much! This works perfectly!
Kimberly09
Fluorite | Level 6
The code works like a charm! Thanks so much for your help.

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

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
  • 4 replies
  • 617 views
  • 2 likes
  • 3 in conversation