****************************************************************** * * * PROGRAM : SAC.SAS * * * * PROGRAMMER : Anne Maumary-Gremaud * * * * PURPOSE : Create a SAS dataset containing derived * * variables from the CxY datasets. * * Program can be modified to process CxYx data * * from any year by setting severals * * parameters at beginning of program. * * * * MODIFIED: To work from aggregated datasets -- 11/12/01 * * Patrick Malone * * * * INPUT : Datasets containing elemental SAS variables * * (CxY) * * * * OUPUT : SAS dataset containing the derived variables * * * ******************************************************************; **Fill out information in next section for data processed ** **in this run. **; %let source=Child; %let src=c; %let inst=y; %let longname=schooladjustmentchild; %let scoredname=SAC; **Enter high-level path (e.g., l:\datasets) **; %let path=l:\datasets; **Enter year of data collection **; %let yr=9; **Enter variable which must be present to retain record (typically interviewer id) **; %let screen=intid; **Specify Lib for input datasets **; Libname SASIN "&path.\&source.\&longname.\U"; **Specify Lib for output datasets **; Libname SASOUT "&path.\&source.\&longname.\S"; ****** DO NOT MODIFY BELOW THIS LINE **************; *when calculating the mean; %macro linmean; data &INDATA; set &INDATA; label &var_name = "&var_labl"; array sumvars {*} &var_list; if n(of sumvars(*))>=.5*dim(sumvars) then &var_name=mean(of sumvars(*)); proc sort; by site tcid; run; %mend linmean; data SASOUT.&scoredname.&yr.; set SASIN.&src.&yr.&inst; ** recode 12 items for consistency of meaning **; array X[12] c&yr.y1 c&yr.y4 c&yr.y7 c&yr.y8 c&yr.y9 c&yr.y10 c&yr.y12 c&yr.y13 c&yr.y14 c&yr.y15 c&yr.y17 c&yr.y19; array RX[12] c&yr.y1r c&yr.y4r c&yr.y7r c&yr.y8r c&yr.y9r c&yr.y10r c&yr.y12r c&yr.y13r c&yr.y14r c&yr.y15r c&yr.y17r c&yr.y19r; do i=1 to 12; RX[i]=6-X[i]; end; drop i; label c&yr.Y1r="Reversed-School year difficult" c&yr.Y4r="Reversed-Other kids hit/made fun of me" c&yr.Y7r="Reversed-School work was really hard" c&yr.Y8r="Reversed-I had a hard time making friends" c&yr.Y9r="Reversed-Other kids tried to make me do bad thing" c&yr.Y10r="Reversed-I got into trouble this year" c&yr.Y12r="Reversed-I did not do well in academics" c&yr.Y13r="Reversed-I did not have many friends" c&yr.Y14r="Reversed-Other kids bothered my this year" c&yr.Y15r="Reversed-Teachers were on me because I broke rule" c&yr.Y17r="Reversed-Teachers do not care about kids" c&yr.Y19r="Reversed-Bad things happen to me at school" ; run; %let indata=SASOUT.&scoredname.&yr.; %let var_name =sac&yr.frd ; %let var_labl = %str(School adj child: friends problems Yr &yr.) ; %let var_list = %str(c&yr.y3 c&yr.y4r c&yr.y8r c&yr.y9r c&yr.y13r c&yr.y14r); %linmean; %let var_name =sac&yr.dif ; %let var_labl = %str(School adj child: difficulties Yr &yr.) ; %let var_list = %str(c&yr.y1r c&yr.y2 c&yr.y5 c&yr.y7r c&yr.y10r c&yr.y12r c&yr.y15r c&yr.y19r); %linmean; %let var_name =sac&yr.gen ; %let var_labl = %str(School adj child: general facts Yr &yr.) ; %let var_list = %str(c&yr.y6 c&yr.y11 c&yr.y17r c&yr.y18 c&yr.y20); %linmean; proc sort; by cohort site tcid; run;