/*-----------------------------------------------------------------* | Name: gface.sas | | Title: Guerry data in a faces display, by regions | | ----------------------------------------------------------------| | Procs: format stdize summary | | Macros: brewerpal gdispla faces facekey inset | | Datasets: fmt stats | | ----------------------------------------------------------------| | Author: Michael Friendly | | Created: 22 Mar 2005 10:36:06 | *-----------------------------------------------------------------*/ title 'Guerry data in a faces display, by regions'; title; %include data(guerry); %include goptions; * For gif, jpg; * goptions xpixels=600 ypixels=600; %brewerpal(n=6,palette=dark2, out=palette); data fmt; set palette(rename=(color=label)); retain fmtname 'clr'; start = _n_; keep fmtname start label; proc format cntlin=fmt; %let varlist = Suicides Crime_prop Crime_pers Literacy Donations Infants Wealth Commerce Clergy Crime_parents Infanticide Donation_clergy Lottery Desertion ; /* To use ranks, rather than data values: proc rank data=guerry out=guerry; * var Crime_pers Crime_prop Literacy Infants Donations Suicides; * var Crime_pers Crime_prop Instruction Infants Donations Suicides; var &varlist; */ proc format; value $reg 'C'='Central' 'E'='East' 'N'='North' 'S'='South' 'W'='West' ' ' = 'Corsica'; proc stdize data=guerry out=scaled method=range; var &varlist; proc summary data=scaled missing; class region; var &varlist; output out=stats mean=&varlist; *proc print; *-- Assign row, col locations for the faces display; data stats; length region $10 clr $8; set stats; if _type_=0 then do; region = 'All France'; clr='black'; row=1; col=1; end; else do; select(region); when('C') do; reg=1; row=2; col=2; end; when('E') do; reg=2; row=2; col=3; end; when('N') do; reg=3; row=1; col=2; end; when('S') do; reg=4; row=3; col=2; end; when('W') do; reg=5; row=2; col=1; end; otherwise do; reg=6; row=3; col=3; end; end; clr = put(reg, clr.); region = put(region, $reg.); end; *proc print; %gdispla(OFF); %faces(data=stats, id=region, idnum=_freq_, color=clr, hcolor=clr, res=2, blks=1, rows=3, cols=3, left = &varlist &varlist, right = &varlist &varlist, row=row, col=col, name=gfaces ); %facekey( data=stats, left = &varlist &varlist, right = &varlist &varlist, htext=1.75, name=facekey ); %gdispla(ON); *options mprint; %inset(main=gfaces, inset=facekey, at=67 67, size=32 32);