proc sort data=old.Ex1_Missing_Weeks out=ds_com; by SUBJECT RecordPosition Ref_Date1_ Ref_Date2_ EXSTDT ; where EXSTDT ne ''; run; proc sort data=new.Ex1_Missing_Weeks out=ds_new; by SUBJECT RecordPosition Ref_Date1_ Ref_Date2_ EXSTDT; run; data ds_new; set ds_new; if RecordPosition=. then RecordPosition=0; subject=strip(subject); run; proc sort data=ds_new; by SUBJECT RecordPosition Ref_Date1_ Ref_Date2_ EXSTDT; run; data ds_com_; set ds_com; length EXSTDT1 $10.; if Ref_Date0_ ne . then Ref_Date0_n =put(Ref_Date0_ ,yymmdd10.); else Ref_Date0_n=''; if Ref_Date1_ ne . then Ref_Date1_n =put(Ref_Date1_ ,yymmdd10.); else Ref_Date1_n=''; if Ref_Date2_ ne . then Ref_Date2_n =put(Ref_Date2_ ,yymmdd10.); else Ref_Date2_n=''; if EXSTDT not in ('','None') then do; mm=scan(EXSTDT,1,'/'); dd=scan(EXSTDT,2,'/'); if length(EXSTDT) =8 then EXSTDT1=strip(substr(EXSTDT,5))|| '-0'||substr(EXSTDT,1,1) || '-0'|| substr(EXSTDT,3,1) ; else if length(EXSTDT) =9 and length(mm)=1 then EXSTDT1=strip(substr(EXSTDT,6))|| '-0'||substr(EXSTDT,1,1) || '-' ||substr(EXSTDT,3,2) ; else if length(EXSTDT) =9 and length(dd)=1 then EXSTDT1=strip(substr(EXSTDT,6))|| '-' ||substr(EXSTDT,1,2) || '-0'|| substr(EXSTDT,4,1) ; else if length(EXSTDT)=10 then EXSTDT1=substr(EXSTDT,7)|| '-' || substr(EXSTDT,1,2) ||'-'|| substr(EXSTDT,4,2) ; end; else EXSTDT1=EXSTDT; subject=strip(subject); DM_Comments=strip(DM_comments); if RecordPosition=. then RecordPosition=0; drop mm dd EXSTDT Ref_Date1_ Ref_Date2_ Ref_Date0_; run; proc sort data=ds_com_ out=ds_com1(rename=(EXSTDT1=EXSTDT Ref_Date0_n=Ref_Date0_ Ref_Date1_n=Ref_Date1_ Ref_Date2_n=Ref_Date2_)); by SUBJECT RecordPosition Ref_Date1_n Ref_Date2_n EXSTDT1 DM_Comments; run; *EXSTDT1=EXSTDT; proc sort data=ds_com1; by SUBJECT RecordPosition Ref_Date1_ Ref_Date2_ EXSTDT; run; data fin merge.Ex1_Missing_Weeks; merge ds_new(in=a) ds_com1(in=b); by SUBJECT RecordPosition Ref_Date1_ Ref_Date2_ EXSTDT; if a; run;
... View more