********************************************************************** * Programmer: Yuming Ning **********************************************************************; options center nofmterr ps=50; *ASSIGN LIBRARY NAMES; libname chs '\\Dmic06\poa\yuming\Yale Biostat\SarwatC\data'; libname chs1 '\\Dmic06\poa\yuming\Yale Biostat\SarwatC\mi_data'; data chs1.origin; merge chs.baseline chs.followup_2 chs.followup_3 chs.followup_4 chs.followup_5 chs.followup_6 chs.followup_7; by idno; run; data chs1.newadl; set chs1.origin; array newadl [7] newadl1-newadl7; do j=1 to 4; if newadl[j]>=0 & newadl[j+1]<0 & newadl[j+2]>=0 & newadl[j+3]>=0 then do; value=newadl[j+2]; time=j+2; keep idno time value; output; end; end; run; data chs1.socsup; set chs1.origin; if perstat=1; array socsup [7] socsup1-socsup7; do j=1 to 3; if socsup[j]>=0 & socsup[j+1]<0 & socsup[j+2]>=0 then do; value=socsup[j+2]; time=j+2; keep idno time value; output; end; end; run; data chs1.newdig; set chs1.origin; array newdig [7] newdig1-newdig7; do j=1 to 4; if newdig[j]>=0 & newdig[j+1]<0 & newdig[j+2]>=0 & newdig[j+3]>=0 then do; value=newdig[j+2]; time=j+2; keep idno time value; output; end; end; run; data chs1.newmmse; set chs1.origin; array newmmse [7] newmmse1-newmmse7; do j=1 to 4; if newmmse[j]>=0 & newmmse[j+1]<0 & newmmse[j+2]>=0 & newmmse[j+3]>=0 then do; value=newmmse[j+2]; time=j+2; keep idno time value; output; end; end; run; data chs1.findiab; set chs1.origin; array findiab [7] findiab1-findiab7; do j=1 to 6; if findiab[j]<0 and findiab[j+1]>=0 then do; value=findiab[j+1]; time=j+1; keep idno time value; output; end; end; run; data chs1.arthr; set chs1.origin; array arthr [7] arthr1-arthr7; do j=2 to 6; if arthr[j]<0 and arthr[j+1]>=0 then do; value=arthr[j+1]; time=j+1; keep idno time value; output; end; end; run; data chs1.simumiss; set chs1.origin; array newadl [7] newadl1-newadl7; array socsup [7] socsup1-socsup7; array newdig [7] newdig1-newdig7; array newmmse [7] newmmse1-newmmse7; do j=1 to 4; if newadl[j]>=0 & newadl[j+1]<0 & newadl[j+2]>=0 & newadl[j+3]>=0 then do; newadl[j+2]=.; t_adl=j+2; end; end; do j=1 to 3; if socsup[j]>=0 & socsup[j+1]<0 & socsup[j+2]>=0 then do; socsup[j+2]=.; t_soc=j+2; end; end; do j=1 to 4; if newdig[j]>=0 & newdig[j+1]<0 & newdig[j+2]>=0 & newdig[j+3]>=0 then do; newdig[j+2]=.; t_dig=j+2; end; end; do j=1 to 4; if newmmse[j]>=0 & newmmse[j+1]<0 & newmmse[j+2]>=0 & newmmse[j+3]>=0 then do; newmmse[j+2]=.; t_mmse=j+2; end; end; drop j; run; data chs1.simumiss1; set chs1.simumiss; run; data chs1.simumiss2; set chs1.simumiss; keep idno perstat agebl female nonwhite newadl1 newgenhel1 newgrip1 newstand1 newrise1 newtime1 new_wt1 newstep1 newmile1 newmmse1 newdig1 socsup1 newdep1 newhear1 newvision1 newadl2 newgenhel2 newgrip2 newstand2 newrise2 newtime2 new_wt2 newstep2 newmile2 newmmse2 newdig2 socsup2 newdep2 newhear2 newvision2; run; data chs1.simumiss3; set chs1.simumiss; keep idno perstat agebl female nonwhite newadl1 newgenhel1 newgrip1 newstand1 newrise1 newtime1 new_wt1 newstep1 newmile1 newmmse1 newdig1 socsup1 newdep1 newhear1 newvision1 newadl2 newgenhel2 newgrip2 newstand2 newrise2 newtime2 new_wt2 newstep2 newmile2 newmmse2 newdig2 socsup2 newdep2 newhear2 newvision2 newadl3 newgenhel3 newgrip3 newstand3 newrise3 newtime3 new_wt3 newstep3 newmile3 newmmse3 newdig3 socsup3 newdep3 newhear3 newvision3; run; data chs1.simumiss4; set chs1.simumiss; keep idno perstat agebl female nonwhite newadl1 newgenhel1 newgrip1 newstand1 newrise1 newtime1 new_wt1 newstep1 newmile1 newmmse1 newdig1 socsup1 newdep1 newhear1 newvision1 newadl2 newgenhel2 newgrip2 newstand2 newrise2 newtime2 new_wt2 newstep2 newmile2 newmmse2 newdig2 socsup2 newdep2 newhear2 newvision2 newadl3 newgenhel3 newgrip3 newstand3 newrise3 newtime3 new_wt3 newstep3 newmile3 newmmse3 newdig3 socsup3 newdep3 newhear3 newvision3 newadl4 newgenhel4 newgrip4 newstand4 newrise4 newtime4 new_wt4 newstep4 newmile4 newmmse4 newdig4 socsup4 newdep4 newhear4 newvision4; run; data chs1.simumiss5; set chs1.simumiss; keep idno perstat agebl female nonwhite newadl1 newgenhel1 newgrip1 newstand1 newrise1 newtime1 new_wt1 newstep1 newmile1 newmmse1 newdig1 socsup1 newdep1 newhear1 newvision1 newadl2 newgenhel2 newgrip2 newstand2 newrise2 newtime2 new_wt2 newstep2 newmile2 newmmse2 newdig2 socsup2 newdep2 newhear2 newvision2 newadl3 newgenhel3 newgrip3 newstand3 newrise3 newtime3 new_wt3 newstep3 newmile3 newmmse3 newdig3 socsup3 newdep3 newhear3 newvision3 newadl4 newgenhel4 newgrip4 newstand4 newrise4 newtime4 new_wt4 newstep4 newmile4 newmmse4 newdig4 socsup4 newdep4 newhear4 newvision4 newadl5 newgenhel5 newgrip5 newstand5 newrise5 newtime5 new_wt5 newstep5 newmile5 newmmse5 newdig5 socsup5 newdep5 newhear5 newvision5; run; data chs1.simumiss6; set chs1.simumiss; keep idno perstat agebl female nonwhite newadl1 newgenhel1 newgrip1 newstand1 newrise1 newtime1 new_wt1 newstep1 newmile1 newmmse1 newdig1 socsup1 newdep1 newhear1 newvision1 newadl2 newgenhel2 newgrip2 newstand2 newrise2 newtime2 new_wt2 newstep2 newmile2 newmmse2 newdig2 socsup2 newdep2 newhear2 newvision2 newadl3 newgenhel3 newgrip3 newstand3 newrise3 newtime3 new_wt3 newstep3 newmile3 newmmse3 newdig3 socsup3 newdep3 newhear3 newvision3 newadl4 newgenhel4 newgrip4 newstand4 newrise4 newtime4 new_wt4 newstep4 newmile4 newmmse4 newdig4 socsup4 newdep4 newhear4 newvision4 newadl5 newgenhel5 newgrip5 newstand5 newrise5 newtime5 new_wt5 newstep5 newmile5 newmmse5 newdig5 socsup5 newdep5 newhear5 newvision5 newadl6 newgenhel6 newgrip6 newstand6 newrise6 newtime6 new_wt6 newstep6 newmile6 newmmse6 newdig6 socsup6 newdep6 newhear6 newvision6; run; data chs1.simumiss7; set chs1.simumiss; keep idno perstat agebl female nonwhite newadl1 newgenhel1 newgrip1 newstand1 newrise1 newtime1 new_wt1 newstep1 newmile1 newmmse1 newdig1 socsup1 newdep1 newhear1 newvision1 newadl2 newgenhel2 newgrip2 newstand2 newrise2 newtime2 new_wt2 newstep2 newmile2 newmmse2 newdig2 socsup2 newdep2 newhear2 newvision2 newadl3 newgenhel3 newgrip3 newstand3 newrise3 newtime3 new_wt3 newstep3 newmile3 newmmse3 newdig3 socsup3 newdep3 newhear3 newvision3 newadl4 newgenhel4 newgrip4 newstand4 newrise4 newtime4 new_wt4 newstep4 newmile4 newmmse4 newdig4 socsup4 newdep4 newhear4 newvision4 newadl5 newgenhel5 newgrip5 newstand5 newrise5 newtime5 new_wt5 newstep5 newmile5 newmmse5 newdig5 socsup5 newdep5 newhear5 newvision5 newadl6 newgenhel6 newgrip6 newstand6 newrise6 newtime6 new_wt6 newstep6 newmile6 newmmse6 newdig6 socsup6 newdep6 newhear6 newvision6 newadl7 newgenhel7 newgrip7 newstand7 newrise7 newtime7 new_wt7 newstep7 newmile7 newmmse7 newdig7 socsup7 newdep7 newhear7 newvision7; run; * Get sequentially simulated imputation of newadl; data chs1.adl_se1; merge chs1.newadl (in=a) chs1.impse1_7i_1; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_se2; merge chs1.newadl (in=a) chs1.impse1_7i_2; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_se3; merge chs1.newadl (in=a) chs1.impse1_7i_3; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_se4; merge chs1.newadl (in=a) chs1.impse1_7i_4; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_se5; merge chs1.newadl (in=a) chs1.impse1_7i_5; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_se6; merge chs1.newadl (in=a) chs1.impse1_7i_6; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_se7; merge chs1.newadl (in=a) chs1.impse1_7i_7; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_se8; merge chs1.newadl (in=a) chs1.impse1_7i_8; by idno; if a; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_se9; merge chs1.newadl (in=a) chs1.impse1_7i_9; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_se10; merge chs1.newadl (in=a) chs1.impse1_7i_10; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; * Get simultaneously simulated imputation of newadl; data chs1.adl_si1; merge chs1.newadl (in=a) chs1.impsi1_7_1; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_si2; merge chs1.newadl (in=a) chs1.impsi1_7_2; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_si3; merge chs1.newadl (in=a) chs1.impsi1_7_3; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_si4; merge chs1.newadl (in=a) chs1.impsi1_7_4; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_si5; merge chs1.newadl (in=a) chs1.impsi1_7_5; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_si6; merge chs1.newadl (in=a) chs1.impsi1_7_6; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_si7; merge chs1.newadl (in=a) chs1.impsi1_7_7; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_si8; merge chs1.newadl (in=a) chs1.impsi1_7_8; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_si9; merge chs1.newadl (in=a) chs1.impsi1_7_9; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; data chs1.adl_si10; merge chs1.newadl (in=a) chs1.impsi1_7_10; by idno; if a; array newadl [7] newadl1-newadl7; do i=1 to 7; if i=time then do; value1=newadl[i]; time1=i; adl_diff=value1-value; adl_diffa=abs(value1-value); adl_diff2=(value1-value)**2; time_diff=time1-time; end; end; keep idno value value1 adl_diff adl_diffa adl_diff2 time time1 time_diff; run; title 'adl_se1'; proc univariate data=chs1.adl_se1; var adl_diff adl_diff2; run; title 'adl_si1'; proc univariate data=chs1.adl_si1; var adl_diff adl_diff2; run; title 'adl_se2'; proc univariate data=chs1.adl_se2; var adl_diff adl_diff2; run; title 'adl_si2'; proc univariate data=chs1.adl_si2; var adl_diff adl_diff2; run; title 'adl_se3'; proc univariate data=chs1.adl_se3; var adl_diff adl_diff2; run; title 'adl_si3'; proc univariate data=chs1.adl_si3; var adl_diff adl_diff2; run; title 'adl_se4'; proc univariate data=chs1.adl_se4; var adl_diff adl_diff2; run; title 'adl_si4'; proc univariate data=chs1.adl_si4; var adl_diff adl_diff2; run; title 'adl_se5'; proc univariate data=chs1.adl_se5; var adl_diff adl_diff2; run; title 'adl_si5'; proc univariate data=chs1.adl_si5; var adl_diff adl_diff2; run; title 'adl_se6'; proc univariate data=chs1.adl_se6; var adl_diff adl_diff2; run; title 'adl_si6'; proc univariate data=chs1.adl_si6; var adl_diff adl_diff2; run; title 'adl_se7'; proc univariate data=chs1.adl_se7; var adl_diff adl_diff2; run; title 'adl_si7'; proc univariate data=chs1.adl_si7; var adl_diff adl_diff2; run; title 'adl_se8'; proc univariate data=chs1.adl_se8; var adl_diff adl_diff2; run; title 'adl_si8'; proc univariate data=chs1.adl_si8; var adl_diff adl_diff2; run; title 'adl_se9'; proc univariate data=chs1.adl_se9; var adl_diff adl_diff2; run; title 'adl_si9'; proc univariate data=chs1.adl_si9; var adl_diff adl_diff2; run; title 'adl_se10'; proc univariate data=chs1.adl_se10; var adl_diff adl_diff2; run; title 'adl_si10'; proc univariate data=chs1.adl_si10; var adl_diff adl_diff2; run;