OPTIONS LINESIZE=88 PAGESIZE=53 NOCENTER NODATE NONUMBER NOFMTERR; *******************************************************************; * PROJECT NAME: Learning to Use SAS ; * PROGRAM NAME LOCATION DATE PROGRAMMER ; TITLE1 "Source:LEC22P2.SAS Disk 1998#1 11/23/98 EJS " ; * Description: Creating a Code Book for Smoking History Data ; * Check variables and do some recoding ; * OUTPUT: ; * sm1.sd2 Basic SAS DATA from smoking study ; *******************************************************************; LIBNAME new "C:\temp"; PROC FORMAT; VALUE yesnof 1="Yes" 2="No" 3="NA"; VALUE q6f 1="Never" 2="Sometim" 3="Always" 4="NA"; VALUE q10f 1="100%" 2="75%" 3="50%" 4="NA%"; VALUE q11f 1="1st" 2="Meals" 3="Drinking" 4="Others" 5="Bed" 6="Coffee" 7="NA"; VALUE q12f 1="Quit" 2="Stay quit" 3="Short q" 4="Cntl Sm" 5="Future q" 6="Smoke"; DATA d e1 (KEEP=id) e2 (KEEP=id agev1 sdate match); SET new.sm1; ******************************; *** Check age creation **; ******************************; agev1=INT( (sdate-dob)/365.25); IF agev1 NE age THEN DO; match="Miss match"; OUTPUT e1; OUTPUT e2; END; OUTPUT d; ******************************************************; *** Obtain list of subjects with possible age mistakes; ******************************************************; PROC SORT DATA=d; BY id ; PROC SORT DATA=e1; BY id ; DATA smage1; MERGE d e1 (in=a); BY id ; IF a; DATA smage2; MERGE smage1 e2; BY id sdate; PROC PRINT DATA=smage2 SPLIT="/"; ID id; BY id; VAR sdate dob age agev1 match; TITLE2 "Table 1. List of possible errors in age"; DATA d1 (DROP=age); SET d; agev1=INT( (sdate-dob)/365.25); LABEL agev1="Age/at/Survey/(AGEV1)"; *****************************************; *** Data checks **; *****************************************; DATA d2; SET d1; FORMAT q1-q5 q7-q9 yesnof. q6 q6f. q10 q10f. q11 q11f. q12 q12f.; PROC FREQ DATA=d2; TABLES q1*(q2-q12); RUN;