****************************************************************** * PROGRAM: AMP.SAS About My Parent * * PROGRAMMER: Cari McCarty * * MODIFIED: 11/10/2001 Patrick Malone to use macros * * * * 06/1/2004, Jennifer Godwin: * * use of standard scoring pgm * * fix error in code for ampXlrt * * fix error in code for ampXpat * * * * PURPOSE: Create a SAS dataset containing scales * * from raw data in the CxQ_P datasets. * * These datasets * * contain 17 items from AboutMyParent arranged * * into 5 subscales ("appropriate discipline", * * "harsh discipline", "positive attention", * * "tangible rewards", "low reinforcement(youth))." * * In addition, the 8 items from a Parenting- * * Primary Caregiver Measure were also * * read in to produce, 2 other scales * * ("low reinforcement(parent)," and "total low * * reinforcement" (youth+parent)). * * INPUT: C&yr.P for child variables, * P&yr.x_p for the parental variables * * OUTPUT: AMPx * ******************************************************************; ** Enter year of data collection -- Possible years (as of 2004): 5,6*; %let yr =6; *for years 5 and 6; %let c_inst=qp; %let p_inst=xp; %let c_data=q_p; %let p_data=x_p; *for years 8 and 9; /* %let c_inst=akp; %let p_inst=abp; %let c_data=ak; %let p_data=ab; */ libname sasin "N:\Datasets\Child\aboutmyparent\U"; libname sasout "N:\Datasets\Child\aboutmyparent\S"; libname parent "N:\Datasets\Parent\parentingprimarycaregiver\U"; *************** DO NOT MODIFY BELOW THIS LINE ******************************; %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; %macro linsum; 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(*))*dim(sumvars); proc sort; by site tcid; run; %mend linsum; DATA one; SET sasin.c&yr.&c_data; *reverse items; array orig (8) c&yr.&c_inst.9- c&yr.&c_inst.16; array new (8) c&yr.&c_inst.9r c&yr.&c_inst.10r c&yr.&c_inst.11r c&yr.&c_inst.12r c&yr.&c_inst.13r c&yr.&c_inst.14r c&yr.&c_inst.15r c&yr.&c_inst.16r; do i= 1 to 8; new(i)=6-orig(i); end; run; proc sort;by site tcid; DATA two; SET parent.p&yr.&p_data.; *reverse items; array orig (7) p&yr.&p_inst.10- p&yr.&p_inst.16; array new (7) p&yr.&p_inst.10r p&yr.&p_inst.11r p&yr.&p_inst.12r p&yr.&p_inst.13r p&yr.&p_inst.14r p&yr.&p_inst.15r p&yr.&p_inst.16r; do i= 1 to 7; new(i)=6-orig(i); end; keep tcid site p&yr.&p_inst.9- p&yr.&p_inst.16 p&yr.&p_inst.10r p&yr.&p_inst.11r p&yr.&p_inst.12r p&yr.&p_inst.13r p&yr.&p_inst.14r p&yr.&p_inst.15r p&yr.&p_inst.16r; run; proc sort;by site tcid; data amp; merge one (in=in1) two; by site tcid; if in1; run; *****************************************************************************; /* Specify definitions for SCALE VARIABLES below: ** */ %let INDATA = amp; ************************************************************; %let var_name = AMP&yr.APD; %let var_labl = %str(Appropriate Discipline-AMP-Yr &yr.); %let var_list = %str(c&yr.&c_inst.1 c&yr.&c_inst.2 c&yr.&c_inst.4); %linmean; ************************************************************; %let var_name = AMP&yr.HAD; %let var_labl = %str(Harsh Discipline-AMP-Yr &yr.) ; %let var_list = %str(c&yr.&c_inst.3 c&yr.&c_inst.6-c&yr.&c_inst.8); %linmean; ************************************************************; %let var_name = AMP&yr.PAT; %let var_labl = %str(Positive Attention-AMP-Yr &yr.) ; %let var_list = %str( c&yr.&c_inst.10-c&yr.&c_inst.12 c&yr.&c_inst.16); %linmean; ************************************************************; %let var_name = AMP&yr.TRW; %let var_labl = %str(Tangible Rewards-AMP-Yr &yr.) ; %let var_list = %str(c&yr.&c_inst.13-c&yr.&c_inst.15); %linmean; ************************************************************; %let var_name = AMP&yr.LRY; %let var_labl = %str(Low Reinforcement(Youth)-AMP-Yr &yr.); %let var_list = %str(c&yr.&c_inst.10r c&yr.&c_inst.11r c&yr.&c_inst.12r c&yr.&c_inst.13r c&yr.&c_inst.14r c&yr.&c_inst.15r c&yr.&c_inst.16r); %linmean; ************************************************************; %let var_name = AMP&yr.LRP; %let var_labl = %str(Low Reinforcement(Parent)-AMP-Yr &yr.); %let var_list = %str(p&yr.&p_inst.9 p&yr.&p_inst.10r p&yr.&p_inst.11r p&yr.&p_inst.12r p&yr.&p_inst.13r p&yr.&p_inst.14r p&yr.&p_inst.15r p&yr.&p_inst.16r); %linmean; ************************************************************; data sasout.amp&yr.; set amp; AMP&yr.LRT=sum(AMP&yr.LRY, AMP&yr.LRP); if amp&yr.lry=. then amp&yr.lrt=.; if amp&yr.lrp=. then amp&yr.lrt=.; label AMP&yr.LRT="Low Reinforcement-Combined-AMP-Yr &yr.)" c&yr.&c_inst.9r="Reversed-Ignore good behavior" c&yr.&c_inst.10r="Reversed-Smile or wink" c&yr.&c_inst.11r="Reversed-Praise" c&yr.&c_inst.12r="Reversed-Physical affection" c&yr.&c_inst.13r="Reversed-Reward" c&yr.&c_inst.14r="Reversed-Give special privilege" c&yr.&c_inst.15r="Reversed-Do something special" c&yr.&c_inst.16r="Reversed-Tell someone" p&yr.&p_inst.10r="Reversed-Like Behavior-Smile" p&yr.&p_inst.11r="Reversed-Like Behavior-Praise" p&yr.&p_inst.12r="Reversed-Like Behavior-Physical Affection" p&yr.&p_inst.13r="Reversed-Like Behavior-Reward" p&yr.&p_inst.14r="Reversed-Like Behavior-Special Privilege" p&yr.&p_inst.15r="Reversed-Like Behavior-Do Something Special" p&yr.&p_inst.16r="Reversed-Like Behavior-Tell Someone" ; drop i; run; proc sort; by cohort site tcid; run;