options linesize = 78 ; data states ; infile '/mnt/nfs/netapp1/homepage/kcowles/Datasets/states.txt' dlm = "," ; length name $14; input name pop income illit lifeexp murder hs frost area region; run ; proc sort ; by region ; run ; data regions ; length regname $13. ; infile '/mnt/nfs/netapp1/homepage/kcowles/Datasets/regions.txt' dlm = "," ; input region regname $ ; run; data combo ; merge states regions ; by region ; run ; proc print data = combo; run ; proc tabulate data = combo format=10.2 ; class regname ; var income ; tables regname all, income * (n mean ) ; run; %macro maketable( vars, stats ) ; proc tabulate data = combo format= 10.2 ; class regname ; var &vars ; tables regname all, ( &vars ) * ( &stats ) ; run ; %mend maketable ; %maketable( income, n mean ) ; %maketable( area pop, n mean sum ) ; run ; proc sql ; select regname, mean(income) as avgincome from combo group by regname order by regname ; proc transpose data = combo out = mytrans ; by region ; id name ; var income ; run ; proc print data = mytrans ; run ;