/************************************************************************/ /* tables_graphs_ex1.sas -- SAS program to demonstrate different types */ /* of tables and graphs; uses data from HW2 as input (SAS code from */ /* corresponding PSID data cart) */ /************************************************************************/ FILENAME indata "c:\data\PSID\ECO 725\hw2.txt" ; TITLE1 "Tables and Graphs Example Program #1"; DATA t1; /* Read (input) PSID data for HW2 using PSID-generated statements */ ATTRIB ER30001 FORMAT=F4. LABEL="1968 INTERVIEW NUMBER" ER30002 FORMAT=F3. LABEL="PERSON NUMBER 68" ER32000 FORMAT=F1. LABEL="SEX OF INDIVIDUAL" ER25104 FORMAT=F2. LABEL="BC1 EMPLOYMENT STATUS-1ST MENTION" ER25362 FORMAT=F2. LABEL="DE1 EMPLOYMENT STATUS-1ST MENTION" ER28037 FORMAT=F7. LABEL="TOTAL FAMILY INCOME-2004" ER33801 FORMAT=F5. LABEL="2005 INTERVIEW NUMBER" ER33802 FORMAT=F2. LABEL="SEQUENCE NUMBER 05" ER33803 FORMAT=F2. LABEL="RELATION TO HEAD 05" ER33804 FORMAT=F3. LABEL="AGE OF INDIVIDUAL 05" ER33813 FORMAT=F1. LABEL="EMPLOYMENT STATUS 05" ER33817 FORMAT=F2. LABEL="YEARS COMPLETED EDUCATION 05" ER33847 FORMAT=F2. LABEL="WHY NONRESPONSE 05" ER33848 FORMAT=F7.3 LABEL="CORE/IMM INDIVIDUAL LONGITUDINAL WT 05" ; INFILE indata LRECL = 43 ; INPUT ER30001 1 - 4 ER30002 5 - 7 ER32000 8 - 8 ER25104 9 - 10 ER25362 11 - 12 ER28037 13 - 19 ER33801 20 - 24 ER33802 25 - 26 ER33803 27 - 28 ER33804 29 - 31 ER33813 32 - 32 ER33817 33 - 34 ER33847 35 - 36 ER33848 37 - 43 ; /* Restrict input to adult, head respondents with valid ages and */ /* education values */ IF ER33847 EQ 0; /* respondents */ IF ER33803 EQ 10; /* heads */ IF (ER33804 GE 16) AND (ER33804 LT 999); /* adults with valid ages */ IF (ER33817 GT 0) AND (ER33817 LT 98); /* valid education values */ /* Create 3-category education indicator */ IF ER33817 LT 12 THEN educ3cat = 1; /* Did not complete HS */ ELSE IF ER33817 LT 16 THEN educ3cat = 2; /* Comp. HS but not college */ ELSE educ3cat = 3; /* College graduate */ LABEL educ3cat = "Educational category (3-cat)"; /* Create female indicator */ female = (ER32000 EQ 2); LABEL female = "Individual is female"; KEEP ER30001 ER30002 ER28037 ER33801 ER33804 ER33817 female educ3cat; /************************************************************************/ /* examples of tables and graphs */ /************************************************************************/ /* Print example with restrict numbers of observations */ PROC PRINT DATA=t1 (OBS=100); TITLE2 "First 100 observations of head-only data set"; /* Standard PROC MEANS example */ PROC MEANS DATA=t1; TITLE2 "Standard MEANS output for head-only data set"; /* PROC MEANS with selected, cross-tabulated statistics and output data */ /* data set */ PROC MEANS MEDIAN SUM VAR CV DATA=t1; TITLE2 "Cross-tabulated MEANS with selected stats for head-only data set"; CLASS female educ3cat; VAR ER28037; OUTPUT OUT=tsumecat MEAN=inc_mean; PROC PRINT DATA=tsumecat; TITLE2 "Print of output from cross-tabulated MEANS procedure"; /* Frequencies with optional association statistics */ PROC FREQ DATA=t1; TITLE2 "Educational status and gender of 2005 PSID heads"; TABLE educ3cat*female / MEASURES; /* Comparison of differences of means and variances of income by gender */ PROC TTEST DATA=t1; TITLE2 "Comparison of total family incomes by gender"; VAR ER28037; CLASS female; /* Two-way tabulation of income and age */ PROC TABULATE DATA=t1 FORMAT=9.; TITLE2 "Tabulations from 2005 PSID head-only data set (rows and columns)"; CLASS female educ3cat; VAR ER28037; TABLE (ALL educ3cat), (ALL female) * ER28037 * (MEAN STD); PROC TABULATE DATA=t1 FORMAT=9.; TITLE2 "Tabulations from 2005 PSID head-only data set (rows only)"; CLASS female educ3cat; VAR ER28037; TABLE (ALL educ3cat) * (ALL female), ER28037 * (MEAN STD); /* Conditional means of income for gender and detailed educ. measures */ PROC SUMMARY DATA=t1; CLASS female ER33817; VAR ER28037; OUTPUT OUT=tsumedet MEAN=inc_mean; PROC PRINT; TITLE2 "Conditional means for gender and detailed educ. measures"; /* Scatter plot example (directed to GRAPH window) */ PROC GPLOT DATA=tsumedet (WHERE=(_TYPE_ EQ 3)); TITLE2 "Mean incomes by education and gender"; PLOT inc_mean*ER33817=female / HMINOR=0 VMINOR=0; LABEL inc_mean = "2004 income"; LABEL ER33817 = "Years of completed education"; FOOTNOTE1 J=L "Note: Data for heads from 2005 PSID."; RUN; /* Redirect output to PDF file */ ODS LISTING CLOSE; ODS PDF FILE="c:\data\PSID\ECO 725\graph_example1.pdf"; /* Re-do scatter plot (look carefully at labels) */ PROC GPLOT DATA=tsumedet (WHERE=(_TYPE_ EQ 3)); PLOT inc_mean*ER33817=female / HMINOR=0 VMINOR=0; /* Line plot */ PROC GPLOT DATA=tsumedet (WHERE=(_TYPE_ EQ 3)); PLOT inc_mean*ER33817=female / HMINOR=0 VMINOR=0; SYMBOL1 I=JOIN; SYMBOL2 I=JOIN; LABEL inc_mean = "2004 income"; LABEL ER33817 = "Years of completed education"; /* Re-do two-way tabulation just to see how it looks in PDF */ PROC TABULATE DATA=t1 FORMAT=9.; TITLE2 "Tabulations from 2005 PSID head-only data set (rows and columns)"; CLASS female educ3cat; VAR ER28037; TABLE (ALL educ3cat), (ALL female) * ER28037 * (MEAN STD); RUN; ODS PDF CLOSE; ODS LISTING; RUN;