Figure 2.1, page 31.
goptions reset = all; symbol1 value=circle color=black h=1; axis1 order =(0 to 20 by 5) label=(a=0 'Days') minor=none; axis2 order =(0 to 1200 by 200) label = (a=90 'Weight (mg)') minor=none; proc gplot data = bigmice; plot weight*day / haxis = axis1 vaxis = axis2; run;

Figure 2.2, page 32.
proc sort data = bigmice; by day; run; goptions reset = all; proc boxplot data = bigmice; plot weight*day / haxis=(0 to 20 by 5) vaxis = (0 to 1200 by 200) hminor=0 vminor=0; label weight = 'Weight'; label day = 'Day'; run;

Figure 2.3, page 34.
proc sort data = bigmice; by day id; run; goptions reset = all; symbol1 value=circle color=black interpol = join repeat = 38; axis1 order =(0 to 20 by 5) label=(a=0 'Days') minor=none; axis2 order =(0 to 1200 by 200) label = (a=90 'Weight (mg)') minor=none ; proc gplot data = bigmice; plot weight*day=id / haxis = axis1 vaxis = axis2 nolegend; run; quit;

Figure 2.6, page 41.
proc sql;
create table summary as
select day,
mean(weight) as mean_wght,
std(weight) as sd_wght
from bigmice
group by day;
quit;
goptions reset = all;
symbol1 value=circle color=black;
axis1 order =(0 to 20 by 5) label=(a=0 'Days') minor=none;
axis2 label = (a=90 'mean (mg)') order=(0 to 1000 by 200) minor = none;
proc gplot data = summary; plot mean_wght*day / haxis=axis1 vaxis = axis2 name = 'f2_6a'; run; quit; goptions reset = all; symbol1 value=circle color=black; axis1 order =(0 to 20 by 5) label=(a=0 'Days') minor=none; axis2 order =(0 to 140 by 20) label = (a=90 'mean (mg)') minor = none; proc gplot data = summary; plot sd_wght*day / haxis=axis1 vaxis = axis2 name = 'f2_6b'; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template=h2 nofs; treplay 1:f2_6a 2:f2_6b; run; quit;
Figure 2.7, page 42.
proc sort data = pain; by day trial; run; goptions reset = all ; symbol1 value=none color=black interpol = join repeat = 100; axis1 order =(1 2 3 4) label=(a=0 'Trial') minor=none; axis2 order =(0 to 250 by 50) label = (a=90 'Tolerance (sec)') minor=none ; proc gplot data = pain; plot paintol*trial=id / haxis = axis1 vaxis = axis2 nolegend name = 'f2_7a'; run; quit; goptions reset = all ; symbol1 value=none color=black interpol = join repeat = 100; axis1 order =(1 2 3 4) label=(a=0 'Trial') minor=none; axis2 label = (a=90 'Tolerance (sec)') minor=none ; proc gplot data = pain; plot l2paintol*trial=id / haxis = axis1 vaxis = axis2 nolegend name = 'f2_7b'; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template=h2 nofs; treplay 1:f2_7a 2:f2_7b; run; quit;
Figure 2.9, page 45.
proc sql;
create table pain0 as
select *,
max(paintol) as max_pain,
count(paintol) as count_paintol
from pain
group by id
having max(paintol) ne 240 and count(paintol) eq 4;
quit;
proc sql;
create table pain1 as
select id,
mean(paintol) as mean_pain,
std(paintol) as std_pain,
mean(l2paintol) as mean_l2pain,
std(l2paintol) as std_l2pain
from pain0
group by id;
quit;
goptions reset = all;
symbol1 value=circle color=black interpol = r;
axis1 order =(0 to 100 by 20) label=(a=0 'Mean') minor=none;
axis2 order =(0 to 80 by 20) label=(a=90 'Sd') minor = none;
proc gplot data = pain1;
plot std_pain*mean_pain / haxis=axis1 vaxis = axis2 name = 'f2_9a';
run; quit;
goptions reset = all;
symbol1 value=circle color=black interpol = r;
axis1 order =(3 to 7 by 1) label=(a=0 'Mean') minor=none;
axis2 order =(0 to 2 by .5) label=(a=90 'Sd') minor = none;
proc gplot data = pain1;
plot std_l2pain*mean_l2pain / haxis=axis1 vaxis = axis2 name = 'f2_9b';
run; quit;
proc greplay igout = work.gseg tc=sashelp.templt template=h2 nofs;
treplay 1:f2_9a 2:f2_9b;
run; quit;
Figure 2.10, page 46.
proc sort data = pain; by cs id trial; run; goptions reset = all ; symbol1 value=none color=black interpol = join repeat = 100; axis1 order =(1 2 3 4) label=(a=0 'Trial') minor=none; axis2 label = (a=90 'Tolerance (sec)') minor=none ; proc gplot data = pain; by cs; plot l2paintol*trial=id / haxis = axis1 vaxis = axis2 nolegend name = 'f2_10_'; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template=h2 nofs; treplay 1:f2_10_ 2:f2_10_1; run; quit;
Table 2.1, page 48.
Note that there is no variable valley.
proc sql;
create table ozone as
select fullname, site,
mean(long) as long,
mean(lat) as lat,
mean(alt) as altitude
from newozone1
group by site, fullname;
quit;
proc print data = ozone noobs;
run;
fullname site long lat altitude
ANAHEIM ANAH 117.919 33.821 41
AZUSA AZUS 117.923 34.136 189
BURBANK BURK 118.308 34.183 168
LOS-ANGELES-NORTH-MAIN CELA 118.225 34.067 87
CLAREMONT-COLLEGE CLAR 117.704 34.102 364
FONTANA-ARROW-HIGHWAY FONT 117.505 34.099 381
HAWTHORNE HAWT 118.369 33.923 21
LA-HABRA LAHB 117.951 33.926 82
NORTH-LONG-BEACH LGBH 118.189 33.824 7
LYNWOOD LYNN 118.210 33.929 27
PASADENA-WILSON PASA 118.127 34.134 250
PICO-RIVERA PICO 118.058 34.015 69
POMONA POMA 117.751 34.067 270
RESEDA RESE 118.533 34.199 226
RIVERSIDE-RUBIDOUX RIVR 117.417 34.000 214
SIMI-VALLEY SIMI 118.685 34.278 310
SAN-BERNARDINO SNBO 117.273 34.107 317
UPLAND-ARB UPLA 117.628 34.104 369
WHITTIER WHIT 118.025 33.924 58
WEST-LOS-ANGELES-VA-HOSPITAL WSLA 118.455 34.051 91
Figure 2.11, page 49.
Note that the x-axis in the text is reversed.
goptions reset = all;
symbol1 value=none pointlabel=("#site") color=black;
axis1 order =(117 to 119 by .4) label=(a=0 'Longitude') minor=none;
axis2 order =(33.8 to 34.3 by .1) label = (a=90 'Lattitude') minor=none ;
proc gplot data = ozone;
plot lat*long / haxis = axis1 vaxis = axis2 nolegend;
run; quit;
Figure 2.12, page 50.
proc sort data = newozone1; by day site; run; goptions reset = all; symbol1 value=none color=black interpol = join repeat = 20; axis1 order =(6 to 18 by 2) label=(a=0 'Hour') minor=none; axis2 order =(0 to 30 by 5) label = (a=90 'Ozone') minor=none ; proc gplot data = newozone1; by day; plot ozone*hour=site / haxis = axis1 vaxis = axis2 nolegend name = 'f2_12_'; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template=h3 nofs; treplay 1:f2_12_ 2:f2_12_1 3:f2_12_2; run; quit;
Figure 2.13, page 51.
Note that a 5×4 graph was made instead of a 4×5 graph as in the text.
proc greplay igout = work.gseg nofs;
delete _all_;
run;
data ozone1;
set newozone1;
run;
proc sql;
create table ozone2 as
select site,
max(ozone) as max_ozone
from newozone1
group by site
order by max_ozone desc, site desc;
quit;
data ozone2;
set ozone2;
order = _N_;
run;
data fmt_dataset;
retain fmtname "site";
set ozone2 ;
start = order;
label = site;
run;
proc format cntlin = fmt_dataset fmtlib;
select site;
run;
proc sql;
create table ozone3 as
select *
from ozone2, ozone1
where ozone2.site=ozone1.site
order by ozone2.order, ozone2.max_ozone, ozone2.site, ozone1.day, ozone1.hour;
quit;
goptions reset = all;
symbol1 value=none color=black interpol = join repeat = 20;
axis1 order =(6 to 18 by 2) label=(a=0 'Hour') minor=none;
axis2 order =(0 to 30 by 5) label = (a=90 'Ozone') minor=none ;
proc gplot data = ozone3;
by order;
format order site.;
plot ozone*hour=day / haxis = axis1 vaxis = axis2 nolegend name = 'f2_13_';
run; quit;
proc greplay igout = work.gseg tc=sashelp.templt template=h4 nofs ;
treplay 4:f2_13_ 3:f2_13_1 2:f2_13_2 1:f2_13_3 ;
treplay 4:f2_13_4 3:f2_13_5 2:f2_13_6 1:f2_13_7;
treplay 4:f2_13_8 3:f2_13_9 2:f2_13_10 1:f2_13_11;
treplay 4:f2_13_12 3:f2_13_13 2:f2_13_14 1:f2_13_15;
treplay 4:f2_13_16 3:f2_13_17 2:f2_13_18 1:f2_13_19;
run; quit;
proc greplay igout = work.gseg tc=sashelp.templt template = v3 nofs;
treplay 1:template 2: templat1 3:templat2;
run; quit;
proc greplay igout = work.gseg tc=sashelp.templt template = v3 nofs;
treplay 1:templat3 2:templat4;
run; quit;
proc greplay igout = work.gseg tc=sashelp.templt template = v2 nofs;
treplay 1:templat5 2:templat6;
run; quit;
Figure 2.14, page 52.
proc greplay igout = work.gseg nofs; delete _all_; run; quit; goptions reset = all; symbol1 value=none color=black interpol = join repeat = 20; axis1 order =(6 to 18 by 2) label=(a=0 'Hour') minor=none; axis2 order =(0 to 30 by 10) label = (a=90 'Ozone') minor=none ; proc gplot data = ozone3; by order day; where order le 6; format order site.; plot ozone*hour=day / haxis = axis1 vaxis = axis2 nolegend name = 'f2_14_'; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template=h3 nofs ; treplay 1:f2_14_ 2:f2_14_1 3:f2_14_2; treplay 1:f2_14_3 2:f2_14_4 3:f2_14_5; treplay 1:f2_14_6 2:f2_14_7 3:f2_14_8; treplay 1:f2_14_9 2:f2_14_10 3:f2_14_11; treplay 1:f2_14_12 2:f2_14_13 3:f2_14_14; treplay 1:f2_14_15 2:f2_14_16 3:f2_14_17; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template = v3 nofs; treplay 1:template 2: templat1 3:templat2; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template = v3 nofs; treplay 1:templat3 2:templat4 3:templat5; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template = v2 nofs; treplay 1:templat6 2:templat7; run; quit;
Figure 2.15, page 53.
goptions reset = all; symbol1 value=none color=black interpol = join repeat = 38; axis1 order =(1 to 8 by 1) label=(a=0 'Weight (lb)') minor=none; axis2 order =(140 to 280 by 20) label = (a=90 'Week') minor=none ; proc gplot data = weight1; plot weight*week=id / haxis = axis1 vaxis = axis2 nolegend; run; quit;
Figure 2.16, page 54.
goptions reset = all ; symbol1 value=none color=black interpol = join repeat = 38; axis1 order =(1 to 8 by 1) label=(a=0 'Weight (lb)') minor=none; axis2 order =(140 to 220 by 20) label = (a=90 'Week') minor=none ; proc gplot data = weight1; where weight le 220; plot weight*week=id / haxis = axis1 vaxis = axis2 nolegend name = 'f2_16l'; run; quit; goptions reset = all ; symbol1 value=none color=black interpol = join repeat = 38; axis1 order =(1 to 8 by 1) label=(a=0 'Week') minor=none; axis2 order =(200 to 280 by 20) label = (a=90 'Weight (lb)') minor=none ; proc gplot data = weight1; where weight ge 200; plot weight*week=id / haxis = axis1 vaxis = axis2 nolegend name = 'f2_16r'; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template = h2 nofs; treplay 1:f2_16l 2:f2_16r; run; quit;
Figure 2.17, page 56.
proc sql;
create table resid_weight as
select *,
weight - mean(weight) as resid
from weight1
group by id;
quit;
goptions reset = all ;
symbol1 value=none color=black interpol = join repeat = 38;
axis1 order =(1 to 8 by 1) label=(a=0 'Week') minor=none;
axis2 order =(-15 to 15 by 5) label = (a=90 'Weight (lb)') minor=none ;
proc gplot data = resid_weight;
plot resid*week=id / haxis = axis1 vaxis = axis2 nolegend ;
run; quit;
Figure 2.18, page 57.
proc sql;
create table resid_bigmice as
select *,
weight - mean(weight) as tresid
from bigmice
group by day;
quit;
goptions reset = all ;
symbol1 value=none color=black interpol = join repeat = 38;
axis1 order =(0 to 20 by 5) label=(a=0 'Day') minor=none;
axis2 order =(-300 to 300 by 100) label = (a=90 'Weight (mg)') minor=none ;
proc gplot data = resid_bigmice;
plot tresid*day=id / haxis = axis1 vaxis = axis2 nolegend ;
run; quit;
Table 2.2, page 58.
proc sort data = pain;
by id trial;
run;
proc transpose data = pain out = wide_pain prefix = l2pain ;
by id;
id trial;
var l2paintol;
run;
proc corr data = wide_pain noprob nosimple;
var l2pain1-l2pain4;
run;
The CORR Procedure
4 Variables: l2pain1 l2pain2 l2pain3 l2pain4
Pearson Correlation Coefficients
Number of Observations
l2pain1 l2pain2 l2pain3 l2pain4
l2pain1 1.00000 0.72601 0.83634 0.60431
63 62 58 60
l2pain2 0.72601 1.00000 0.71765 0.66188
62 63 58 61
l2pain3 0.83634 0.71765 1.00000 0.76424
58 58 58 58
l2pain4 0.60431 0.66188 0.76424 1.00000
60 61 58 61
Table 2.3, page 59.
proc sort data = smallmice;
by id day;
run;
proc transpose data = smallmice out = wide_smallmice prefix = weight ;
by id;
id day;
var weight;
run;
proc corr data = wide_smallmice noprob nosimple;
var weight2--weight20;
run;
The CORR Procedure
7 Variables: weight2 weight5 weight8 weight11 weight14 weight17 weight20
Pearson Correlation Coefficients, N = 14
weight2 weight5 weight8 weight11 weight14 weight17 weight20
weight2 1.00000 0.92362 0.56648 0.36127 0.23102 0.23132 0.38449
weight5 0.92362 1.00000 0.77280 0.53562 0.44996 0.40932 0.54734
weight8 0.56648 0.77280 1.00000 0.86387 0.80079 0.75786 0.80914
weight11 0.36127 0.53562 0.86387 1.00000 0.92785 0.91622 0.86744
weight14 0.23102 0.44996 0.80079 0.92785 1.00000 0.95541 0.88877
Table 2.4, page 60.
proc sort data = newozone1; by site day hour; run; proc transpose data = newozone1 out = wide_ozone prefix = ozone ; by site day; id hour; var ozone; run; proc corr data = wide_ozone noprob nosimple; var ozone7 ozone8--ozone18; run; [...output omitted...] proc corr data = wide_ozone noprob nosimple cov; var ozone7 ozone8--ozone18; run; [...output omitted...]
Figure 2.19, page 62.
ods html; ods graphics on; proc corr data = wide_pain noprint plots = matrix; var l2pain1-l2pain4; run; ods graphics off; ods html close;
Figure 2.20, page 64.
ods html; ods graphics on; proc corr data = wide_smallmice noprint plots = matrix (nmaxvar = 0); var weight2--weight20; run; ods graphics off; ods html close;
Figure 2.23, page 68.
proc greplay igout = work.gseg nofs; delete _all_; run; quit; goptions reset = all ; axis1 order =(0 to 20 by 5) label=(a=0 'Day') minor=none; axis2 order =(0 to 1200 by 200) label = (a=90 'Weight (mg)') minor=none ; symbol1 interpol=std2mjt v=none color=red r=1; proc gplot data=bigmice; plot weight*day / haxis = axis1 vaxis=axis2 name = 'f2_23a'; run; quit; goptions reset = all ; axis1 order =(0 to 20 by 5) label=(a=0 'Day') minor=none; axis2 order =(0 to 1200 by 200) label = (a=90 'Weight (mg)') minor=none ; symbol1 interpol=std2jt v=none color=red r=1; proc gplot data=bigmice; plot weight*day / haxis = axis1 vaxis=axis2 name = 'f2_23b'; run; quit; proc greplay igout = work.gseg tc=sashelp.templt template = h2 nofs; treplay 1:f2_23a 2:f2_23b; run; quit;
Figure 2.24, page 69.
Plot A only.
data pain_offset; set pain; if cs = "distracter" then trial = trial + .01; run; goptions reset = all ; axis1 label=(a=0 'Trial') minor=none; axis2 label = (a=90 'Weight (mg)') minor=none ; symbol1 interpol=std2mjt v=none color=red r=1; symbol2 interpol=std2mjt v=none color=blue r=1; proc gplot data=pain_offset; plot l2paintol*trial = cs / haxis = axis1 vaxis=axis2 ; run; quit;
Table 2.7, page 70.
proc freq data = cognitive; where ravens ne . ; table round; run;
The FREQ Procedure
Cumulative Cumulative
ROUND Frequency Percent Frequency Percent
1 543 21.44 543 21.44
2 510 20.13 1053 41.57
3 509 20.09 1562 61.67
4 497 19.62 2059 81.29
5 474 18.71 2533 100.00
Table 2.8, page 70.
proc sql;
create table cog as
select id,
sum((ravens ne .)) as observed_raven
from cognitive
group by id;
quit;
proc freq data = cog;
table observed_raven;
run;
The FREQ Procedure
Cumulative Cumulative
observed_raven Frequency Percent Frequency Percent
1 8 1.48 8 1.48
2 21 3.89 29 5.37
3 16 2.96 45 8.33
4 40 7.41 85 15.74
5 455 84.26 540 100.00
Figure 2.25, page 71.
proc univariate data = cognitive noprint; histogram relmonth / midpoints=-2.75 to 24.75 by .5; run;
Figure 2.26, page 72.
goptions reset = all ; axis1 label=(a=0 'Months from baseline') order = (-5 to 25 by 5) minor=none; axis2 label = (a=90 'Subject Id'); symbol1 value=square color=red; proc gplot data=cognitive; where id le 80; plot id*relmonth / haxis = axis1 vaxis=axis2 href = 0 3; run; quit;


















