/**********************************************************************/ /* Appendix */ /* The following OPTIONS statement is used with the programs */ /* in this appendix: */ options ls=80 ps=60; /**********************************************************************/ /* Code for Output 1: Simple PCTN Example */ proc tabulate data=employee; class location dept sex; table location*dept,sex*(n*f=5.0 pctn*f=6.2) / rts=25; title; run; /**********************************************************************/ /* Code for Output 2: Simple PCTSUM Example */ proc tabulate data=employee; class location dept sex; var income; table location*dept,sex*income=' '*(sum*f=dollar11.2 pctsum='PCT-SUM' *f=5.2) / rts=22; run; /**********************************************************************/ /* Code for Output 3: Calculating Row Percentages */ proc tabulate data=employee; class dept sex; table dept,(sex all)*(n*f=5.0 pctn*f=7.2) / rts=13; keylabel all='Row Totals' n='Count' pctn='Row Percent'; run; /**********************************************************************/ /* Code for Output 4: Calculating Column Percentages */ proc tabulate data=employee; class location dept sex; table location*dept all, sex*(n*f=7.0 pctn*f=7.2) / rts=23; keylabel all='Column Totals' n='Count' pctn='Column Percent'; run; /**********************************************************************/ /* Code for Output 5: Calculating Percentages of Page Totals */ proc tabulate data=employee; class location dept sex; table location,dept all='Column Totals', (sex all='Row Totals')* (n*f=5.0 pctn*f=7.2) / rts=13; keylabel n='Count' pctn='Page Percent'; run; /**********************************************************************/ /* Code for Output 6: Calculating Percentages for */ /* Concatenated Tables */ proc tabulate data=employee; class location dept sex; table location dept, sex*(n*f=5.0 pctn*f=7.2) / rts=13; keylabel n='Count' pctn='Percent of this Sex'; run; /**********************************************************************/ /* Code for Output 7: Concatenating the ALL Variable */ /* in an Expression */ proc tabulate data=employee; class location dept sex; table location dept all='Total for Each Sex', sex*(n*f=5.0 pctn*f=7.2) / rts=20; keylabel n='Count' pctn='Percent of this Sex'; run; /**********************************************************************/ /* Code for Output 8: The Significance of Ordering */ /* in Concatenated Expressions */ proc tabulate data=employee; class dept month; table all='All Departments' dept, (all='Year-to-Date' month)*(n*f=5.0 pctn*f=7.2) / rts=13 box='Table 1: Row % defined with ALL first'; table all='All Departments' dept, (all='Year-to-Date' month)*(n*f=5.0 pctn*f=7.2) / rts=13 box='Table 2: Row % defined with MONTH first'; keylabel n='Count' pctn='Row Percent'; run; /**********************************************************************/ /* Code for Output 9: Frequencies of Men and Women */ /* in the Monthly Work Force for Each Department at */ /* the Two Plant Locations */ proc tabulate data=employee; class location dept month sex; table location*(dept all='All Depts.'), month*(sex*f=4.0 all='Both Sexes'*f=5.0)*n / rts=22; keylabel n='#'; run; /**********************************************************************/ /* Code for Output 10: Percentages Based on Sex and */ /* Department Subtotals */ proc tabulate data=employee; class location dept month sex; table location*(dept all='All Depts.'), month*(sex*f=5.2 all='Both Sexes'*f=6.2)* pctn / rts=2 box='Percent of SEX/DEPT Subtotal'; keylabel pctn=' '; run; /**********************************************************************/ /* Code for Output 11: Using an Analysis Variable */ /* as a Denominator */ proc tabulate data=employee; class dept month; var income tottax; table dept, month* (income='Wages Expended'*sum*f=comma8.0 tottax='Total Tax Withheld'*sum*f=comma8.0 tottax='% of Wages Taken for Taxes' *pctsum*f=5.1) / rts=12; keylabel sum=' ' pctsum=' '; run; /**********************************************************************/ /* Code for Output 12: Percentage of Male Income */ /* to Female Income */ data ratio; set employee; if sex='M' then male=income; else if sex='F' then female=income; run; proc tabulate data=ratio; class dept; var male female; table dept,male*sum*f=dollar12.2 female*sum*f=dollar12.2 male=' '*pctsum*f=12.2 / rts=13; keylabel sum='Income' pctsum='Male Income as % of Female Income'; run; /**********************************************************************/ /* Code for Output 13: Percentage of Male Income */ /* to Female Income Displayed as a Ratio */ proc format; picture ratiofmt other='09.99' (mult=1 prefix='1:'); run; proc tabulate data=ratio; class dept; var male female; table dept,male*sum*f=dollar12.2 female*sum*f=dollar12.2 male=' '*pctsum*f=ratiofmt8. / rts=13; keylabel sum='Income' pctsum='Ratio of Male Income to Female Income'; run; /**********************************************************************/ /* Code for Output 14: Computing a Customized Mean */ data mean; set employee; count=1; proc format; picture meanfmt other='0009.99' (mult=1); proc tabulate data=mean; class dept; var income count; table dept,income='Wages Expended'*sum*f=comma10.2 income='Obser-vations with Nonmissing INCOME'*n*f=10. income='Mean Computed by TABULATE'*mean*f=8.2 count='Total Number of Obser-vations'*sum*f=7. income='"Mean" Computed with PCTSUM'* pctsum*f=meanfmt8. / rts=12; keylabel n=' ' sum=' ' pctsum=' ' mean=' '; run; /**********************************************************************/ /* Code for Output 15: Specifying a Constant Value */ /* as the Denominator */ data constant; set employee; if _n_=1 then denom=400; run; proc tabulate data=constant; class dept sex; var income denom; table dept,sex*income=' '* (sum='Total Wages Expended'*f=comma10.2 pctsum= 'Wages Expended per Pay Period'*f=comma9.2) / rts=12; run; /**********************************************************************/