APPENDIX : Scoring program creating derived variables: ****************************************************************** * * * PROGRAM : SAPxSCx.SAS * * * * PROGRAMMER : Anne Maumary-Gremaud * * * * PURPOSE : Create a SAS dataset containing derived * * variables from the PxZx datasets. * * Program can be modified to process PxZx data * * from any cohort or year by setting severals * * parameters at beginning of program. * * * * INPUT : Datasets containing elemental SAS variables * * for each sites (xPxZx) * * * * OUPUT : SAS dataset containing the derived variables * * * ******************************************************************; ** Fill out information in next section for data ** ** Processed in this run. **; ** Name lib Holding SAS data infiles **; libname SASIN 'c:/mydocuments/anne/tech_rpt/schladj' ; ** Specify Lib for output data sets **; libname SASOUT 'c:/mydocuments/anne/tech_rpt/schladj' ; ** Enter Cohort Number **; %let coh= 1 ; ** Enter year of data collection **; %let yr= 7 ; **** DO NOT MODIFY BELLOW THIS LINE ****************************; data first ; set SASIN.DP&yr.Z&coh. SASIN.NP&yr.Z&coh. SASIN.PP&yr.Z&coh. SASIN.SP&yr.Z&coh. ; ** recode 12 items for consistency of meaning **; array X[10] p&yr.z1 p&yr.z6 p&yr.z7 p&yr.z8 p&yr.z10 p&yr.z11 p&yr.z12 p&yr.z13 p&yr.z15 p&yr.z18; array RX[10] rp&yr.z1 rp&yr.z6 rp&yr.z7 rp&yr.z8 rp&yr.z10 rp&yr.z11 rp&yr.z12 rp&yr.z13 rp&yr.z15 rp&yr.z18 ; do i=1 to 10; RX[i]=6-X[i]; end; drop i; ** Handling missing values **; data second; set first; count1=0; count2=0; array contact[*] p&yr.z16 p&yr.z17 ; array tot[*] rp&yr.z1 p&yr.z2 p&yr.z3 p&yr.z4 p&yr.z5 rp&yr.z6 rp&yr.z7 rp&yr.z8 p&yr.z9 rp&yr.z10 rp&yr.z11 rp&yr.z12 rp&yr.z13 p&yr.z14 rp&yr.z15 rp&yr.z18; sum1=sum(of contact[*]); sum2=sum(of tot[*]); do i=1 to 2; if contact[i] = . then count1 = count1 + 1; end; drop i; do i=1 to 2; if count1 le 1 then if contact[i] =. then contact[i]=sum1/(2-count1); end; drop i; do i=1 to 16; if tot[i]=. then count2=count2+1; end; drop i; do i=1 to 16; if count2 le 8 then if tot[i]=. then tot[i]=sum2/(16-count2); end; drop i; ** Computes the scales **; sap&yr.con=(p&yr.z16+p&yr.z17)/2; sap&yr.tot=(rp&yr.z1+p&yr.z2+p&yr.z3+p&yr.z4+p&yr.z5+rp&yr.z6+rp&yr.z7+rp&yr.z8+ p&yr.z9+rp&yr.z10+rp&yr.z11+rp&yr.z12+rp&yr.z13+p&yr.z14+rp&yr.z15 +rp&yr.z18)/16; label sap&yr.con="School adj parent: contact w school Yr &yr." sap&yr.tot="School adj parent:total Yr &yr."; ** Set a permanent SAS Dataset **; data sasout.sap&yr.sp&coh.; set second; keep site tcid cohort sap&yr.con sap&yr.tot; run; proc contents; run;