50%(2)50% found this document useful (2 votes) 2K views42 pagesLearning SAS by Example A Programmers Guide Answers
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content,
claim it here.
Available Formats
Download as PDF or read online on Scribd
558 Learning SAS by Example: A Programmer's Guide
Chapter 1 Solutions
2 nunber)
is 10
sass
* Default length for numerics is 8 */
Chapter 2 Solutions
ae
Ren Cody
2006
© ‘Means and sums of Portfolio Variable:
ion mean sum maxdeSolutions to Odd. Numbered Problems 589
= LeSAv + (R/E)tE#3 = 125;
Chapter 3 Solutions
ea
fence) / 4;
average = (english + History + Mach +
ing of SCORES";
323;
daca company;
infile 'c:\books\te:
LastName
sing \conpany
po § Sal
/+ optional statement
format Salary dotlari0.;
ng of COMPANY"
of TESTDATAY360 Learning SAS by Example: A Programmer's Guide
roo pring data-testdata noobe;
307;
data cache;
infile ‘¢:\books\learning\geccaching txt’ padi
wiote: PAD not necessary but a good idea
See Chapter 21 for a discuasion of this:
imput GeoName $ 1-20
Bongdeg 21-22
Longin 23-28
ZatDeg 29-30
Eatmin 31-36;
title tListing of CACHE
roo print datascache noobs,
+329;
data cache;
infile ‘c:\books\Learning\geccaching. txt’ pad;
imput @1 GesName $20
21 Longdeg 2
223 tongmin 5
029 Lacdeg = 2
631 batmin 6.5
title "Listing of CACHES;
proe print datacache noobs;
sa-at;
data employ
infile 'c:\books\learning\employee.csv' dsd missover;
srimote: missover 1s not needed but a good idea
suncover will also work
See Chapter 21 for an explanation of missover
and truncover ingile opticne
at ID $3. Name §20. Depars $8
DareHire mnddyyi0. Salary dollars.
input TD Name Depart DaveHtire Salary
format DateHire dates;
title ‘Listing of EMPLOY";
proc print data-enploy noobs;Solutions to Odd-Numbered Problems 561
Chapter 4 Solutions
Libname learn ‘e:\books\learning’;
daca learn.pern,
Enput ID: $3. Gender
height Weight;
bok : mmddyyio
abel pop = ‘Dace of Bi
Height = ‘Height in inches
Weight = ‘Weight In pounds’;
format BOB daced.;
001 @ 10/21/1946 68
002 F 5/26/1950 63 1.
003 m S/1i/ieai 72 2
aoe m 7/4/1983 70 128
905 F 12/25/2005 30 40
‘contents of data set PERM"
1403
fname perm ‘e:\hooks\learning
input Age Gender $ (Quesi-guess) ($1.);
23M 15243
30 F 11223
42 w 23555
4@ F 55541
55 F 42232
52 F 33333
68 m 44122
‘*#topening up a new session, you need
a Libnane atatemenc,
ibname perm ‘22h
aks \ earning
ticle "Computing Average Age"?
proc means data=perm. survey2007362 Learning SAS by Example: A Programmer's Guide
Chapter 5 Solutions
value §party 'D
value $Likert ‘1 ‘Strongly Disagree!
2
3
5: = ‘strongly Agree
nput Age Party : $1. (Quesi-gu
ay ist. + Ds
label Quest = * ing a good job
Ques? ing a good job"
Ques} = ‘taxes are too high
Quesd = ‘Government should cut spending’;
format age agegry.
Party Sparty
Quesi-Quesd Siikert.;
23 22
87 a
a8 ‘
° 2a
5 23
3 ae
proc freq data=voter;
tables Quesi-gues4;Solutions to Odd. Numbered Problems 563
15-3
nput Color : $1. 68
REGYY..2GRBGYPOOVVE
value §color 'R','8','G! = ‘rou 1
Heitor = 'eroup 2"
other = ‘Group 3"
proc freq datascolors;
tables color / nocum mij
‘color Frequencies (Grouped) *
ng,
‘The MISSING option places the frequency
of missing values in the body of the
table and causes the percentages to be
fornat color $color.;
ibname learn ‘e;\books\learning’ ;
options fmesearca= (learn) ;
proc format Library=Learn’ fimtLib:
value yesno 1='¥es' 2=!No';
value §yesno 'Y'="Yes"
value fgender '"='Nale
value age20y>
61-80
Select File --> import pata
Choose Excel and select Srugtest.xla364 Learning SAS by Example: A Programmer's Guide
a5
Db
3
achool,
put Age Qu
f age = 12
else If Age
if quiz = "4
el ouiz
Quiz
else i2 Quiz
1 \books \learning\soccer x18
2: $1. mid
then Grae
= 13 then Gr
then Quizs:
= 'B! Shen
c! then
ise if Quiz = 'F! then
Courgegrade = ,2*Quizcra
292 95
12 B 8 68
1c 7875
13 A 92 93
12 P55 62
a3 Bae 62
title “Listing of scwoon*;
proc print data-school noob:
“703
citle "selec! ple!
"9888" or
5:
uiz
Quiz
Quiz
Quiz
ees from SA
EnpipSolutions to Odd-Numbered Problems 568
ength Cholsroup $ 6
zelect;
when (missing (chol}} CholGroup = * +;
when (Chol le i10) CholGroup = ‘Low’;
when (Chol le 140) CholGreup = ‘Medium’;
otherwise CholGro’ Higa!
end,
title *histing of BLOOD
‘loed noobs
sitle ‘Selected cheervations from BICYCLES
proc print data-learn. bicycles noobs
where Model eq Road Bike" and Unircost gt 2500 or
Model eq *Hybrid* and Unizcoat gt 650
‘Wose: parentheses ave not needed since Che AND
operation is performed before OR, You may include
then if you wish;
DEP,
label SBP = ‘systolic Blood Pressure"
DBP = ‘Diastolic Blood Pressure";
120 80
eB 96
100
82
150 98
100
stenote: thia program assumes there are no
missing values for >ulse or SRP;366 Learning SAS by Example: A Programmer's Guide
daca newvitate;
set vitals;
LE Age 1 50 and nov missing (Age) then dor
Lf Pulse le 70 then PulseGroup = ‘Low '
else Pulsetroup = 'High';
AE SBP le 140 then SBPGroup = ‘Low 'y
else sapcroup = ‘High’:
end:
else iz Age ge 50 then do;
Af Pulse lt 7 then ?ulsecroup = ‘Low’;
else PulseGroup = ‘High';
Lf SBP le 140 then SBPGroup
else SBPGroup = "High's
end;
"tow":
title ‘histing of NEWWITALS*
proc print datasnewvitals noobs
+823;
data test;
input 8
Subj + 1)
aacalines;
30 85 92
15 76 88
be 82 92
72 68 70
wel-Scored
title tListing of TEST?
roe print data-tes= noche;
+825;
data logs:
doN = 1 to 20;
Log = Logit)
output;
end;
title “Listing of toss"
proc print data-logs nosh;
see7;
data plotit
do x= 0 to 10 by 1Solutions to Odd. Numbered Problems 567
y = 31xt+2 - 54x + 10
output;
ena;
goptions
symbol
proc gplot datasplotit;
plot y * x:
quit
+829;
data temperatures;
do Day = 'Mon', 'Pues*, "Wed", ‘Thu’, "Frit, ‘Sat", 'Sun';
input Tem @;
output;
end;
aacalines;
70.72:16 76:17:78 8S
title “Listing of TEMPERATURES";
proc print datastemperatures noobs;
seea;
data temperature:
Tength city $75
do City = "Dallas*, ‘Houston’
Go Hour = 1 to 24;
input Temp @;
datalines;
80 61 82 83 64 84 87 88 69 89
91 93 93 95 96 97 99 95 92 90 88
85 84 80 78 76:77:78
80 &1 42 62 86
88 90 92 $2 93 96 94 92 90
ee 86 82 78 76 74368 Learning SAS by Example: A Programmer's Guide
ves in allag and Hous!
1 to 999 until (Amount ge 30000!
900
+ Amount * (0425/4);
ng of Mowey™
33
madyyo
daves.;
age = yrait (Dos, visit, ‘Actual };
format DOR Vieit dazed
90110/21/185011Nev2008,
00202 /02/198825May2005,
00322/25/200825ec2006
92/23/05Solutions to Odd. Numbered Problems 569
03/25/15
95/09/06
options year
/* Good idea to set yearcutof! back to
the default after you change it */
title ‘Listing of YEARIS10_2006";
proc print datasyear1910_2006 nooks
19-5;
data Srea:
‘set learn. hosp (keep=AdnitDate) ;
Day = weekday (AdnitDate) ;
Month = month (AdnitDate)
Year = year (AdmicDace} ;
proc format
value days 1 “Tue!
‘Sep
es for Hospital Admissions";
req:
tables Day wonth Year / nocum nopercent,
format Day days. Monta months.
+909;
title "Adrissions before suly 15, 2002"
proc print dataslearn.hosp;
where AdmitDate le '01sul2002'a and
AcricDate is not missing
19-9;
data daces;
input Day Month Year;
Af missing(Day) then 3: dy (Month, 15, Year) ;
else Date = mdy (Month, Day, Year};
format Date mnddyy10.
datalines;
25 12 2005
5 2002510 Learning SAS by Example: A Programmer's Guide
fe “Lia!
sof DATES";
proc print data=dates nocks
Quarters = intek('a Jan2006"A,VisivDace) ;
proc print data-return noobs
Chapter 10 Solutions
waere Gender eq
Combined = .001*WEC + REC:
male‘ and Blocdtype='Az!
title "Listing of suasi
proc print data=subset_a noobs
ooltwac + Re;
‘Peale! and Blocdtyp
Ag! and Combined ge 2Solutions to Odd-Numbered Problems S71
ticle "Listing of susser_er
proc print data=subset_» noobs;
10-3;
data lowale lowfenale;
set learn.blood;
waere Chol 1¢ 100 and Chol ia not missing
J+ alternative statenent
Where Chol 1t 160 and not missing {chol)
if Gender = ‘Female’ chen output lowfemale;
else if Gender = ‘Male’ then ouput lownale;
title thisting of LONMALE;
proe print data=lowmale noobs;
title "Listing of LONFEMALE*;
proc print data-lowfenale necks)
10-5;
title *histing of Tivewroay:;
proc print data=learn. inventory noobs;
title "Listing of NEWPRODUCTS*;
proe print data-leara.newprod
daca updated;
set learn. inventory learn nesproducts;
title thisting of updazea";
proe print data-updated,572 Learning SAS by Example: A Programmer's Guide
10-7;
prog means data=learn.gym noprint;
var fee;
output outsMeanfee(drop=_type_ _freq_)
Mean-Avefee;
gata percent:
get learn. gym
Af n= 1 then set Meanfee;
FeePercent = round(100*fee / avetee)
arop Avefee;
title tListing of PERCEND*
pros print data-PERCENT,
10-9;
proc sort dat.
by Nodels
ry outsinventory;
proc sort data-learn.purchase out-purchase;
by Model!
by Model!
if Inpurchase;
potalprice = Quantity*?rice;
format Totalprice dollar8.2;
title “Listing of PURLPRICE*;
proc print data-pur_price necks;
“10-11;
options mergenoby=nowarn:
gata try;
merge learn. inventory Learn.purchase:
title "Listing of TRYIt
roe print dataceyl;options mergenohs
data try2;
Solutions to Odd. Numbered Problems 873
merge learn. inventory learn.purchase,
title ‘Listing of TaY2
proc print Gata-tey2;
options mergenobyserror;
data try;
rerge Learn. inventory Learn.perchaser
title ‘Listing of TY3"
proc print data-teyé
s10-13;
/* Solution where the numeric identifier is converted
daca survey?;
set learn. survey (rename=(1D
3D = put (NumID, 23.};
Grop NumID;
proc sort data-survey2;
by ID
data combine:
nerge demographic
survey2;
by ID;
title thisting of cosine;
proe print data=conbine noobs;
/* Solution wheze the chazacter
to a numeric value */
gata demographic:
set learn. denograzhic (rename
MunD) ):
identifier is converted
(ap = cnarz));574 Learning SAS by Example: A Programmer's Guide
jchar19,3.)
by ID:
datasdenographic;
proc sort data-learn.survey2 out-survey?
by TD
merge demographic
survey2;
title "Listing of CoMBINE™;
Chapter 11 Solutions
(ieight* 0254) +62,
BurRownd = round (3M2) ;
BEERound,
fenth = round(BMZ, .1);
round (2MI,5) ;
bleed;
= missing (WBC) then call missing(Gender,28¢, Chol)Solutions to Odd. Numbered Problems 578
title thisting of Mrss_sioop:;
proe print data=miss bleed noobs;
suns;
data psychscore;
‘set learn.psych:
Scorehve = mean (largest (1,0f Scorel-scorss) ,
largest (2,0f Scorel-scores},
largest (3, 0f Scoel-scores) }
Af n(of Quesi-guesid) ge 7 then
QuesAve = mean(of Quesi-guesi0) ;
Composit = ScoreAve + 10*Quesave;
keep ID ScoreAve QuesAve Composit;
title thisting of esycHscoRE:;
proc print dataspsychscore noobs;
sist;
data pull;
x 510) y = 20) 2 = -30;
Abs2 = abs(z):
ExpX = round (exp (x) , 001);
Circumference = round (2*constant ("pi") *y, 001);
pat calls
s11-
data fake;
do Subj = 1 to 100,
Af ranuni (12345) le .4 then Gender = ‘Fenale’;
glee Gender = Male
Age = int (ranuni(12345)#50 + 10)
output;
ena;
title “First 10 observations of FAKE";
proc print data-fake (obs=10) ;
saan
daca convert
get learn. char_num(rename=576 Learning SAS by Example: A Programmer's Guide
(age = chax_Age
Weight = Char_Weight
Zip = Num zip
SS = Nonss));
Age = input (Char_age, 8.)
ght = input (Char_Age,6.)7
(gun_ss, ssn]1)
Zip = put (ium Zip,25-);
le "Listing of CONCERT";
ea
fh
Pricel = lag (Pri
Price2 = lag2(Pr
average = mean(Price, Pricel, Price2);
goptions reset-ail colors:
symbol vedot Lines izsnooth;
symbol? vesquare line=2 i=amo0
title "Plot of Price and Moving Average"
proc gplot data-anooth;
Average*Date / overlay;
Chapter 12 Solutions
12-1;
tone way to test the storage lengths is to use
the LENGTH function chat returns storage lengths
\e LENGTH function that returns ©
cer string,
length AS 42 4;Solutions to Odd. Numbered Problems 877
cat = cate(a.s);
Af Mame = 'Shith’ then Mateh = 'No';
else Match = "Yes";
Substring = substr (Name, 5,2);
TA = Lengthe(al:
EB = Lenethe(s)
Name = lengthe (Name) ;
LAands = lengthe(aands}
cat = lengtac (cat)
Match = Lengthe (Match)
LSubstring = Lengthe (Substring)
title ‘Lengths of Character Variables";
roe print data-storage noobs;
var Lt
‘ALL Variables starting with LL;
Variable Storage Length
A 4
2 4
Name °
and, 8
cat 200
match 2
Substring 3
12-3;
daca nanes_and nove,
‘get learn names_and more,
Nane = comp! (ame) 7
Phone = compress (Phone, , kd")
citle “Listing of Data Set LEARN.NAMES_AND_MORE*;
proc print data-nanes_and.moze noobs;
12-5;
data convert;
set learn.names_and_pore (keep=Mixed)
Integer = Input (scan (Mixed,1," /*),8.);
Numerator = input (scan (Mixed,2," /"), 8.)
Denominater = input (scan (Mixed,3," /*),8.);
if missing{unerator) then Price = Integer;
glee Price = Integer + Sumeracor / Denominacor;
Grop Numerator Denominator integer;578 Learning SAS by Example: A Programmer's Guide
title "Listing of CONVERT";
proc print date=convert noobs;
12-7;
‘Using one of
gata concat
set learn,
length Combined $3;
Combined = catx(*~', Group, Subgroup) ;
title ‘Listing of coNcAn;
roe print data-concat noobs;
swithout using CAT functions;
data concat
set learn, study (keep=Group Subgroup)
Length Combined $3;
Combined = trim(Grous) || '-* || put (Subgroup, 1.9;
title thisting of coNcAD*;
prot print data=coneat noobs;
12-9;
data spirited;
get learn. gales,
waere find (Customer,
piste! i):
title "Listing of SPIRITED"
proc print data=spirited noobs;
saa-21
sitle ‘Subjects from SRRORS with Digits in the Name';
proc print datasleara.errors nocks;
where anydigit (vane)
var Subj Name;
12-13;
daca exact withings
get learn. eccial,
AE SSI eg $82 then output exact;
else if spedis(ssi,ss2) le 25 andSolutions to Odd. Numbered Problems 579
not missing(Ssi) and
not migsing(Ss2) then out
withinas;|
sting of wxTHrwas*
| nore (kee
fengch AreaCode $ 27
hreacode = substy (Phone,2,3)
ng of NUMBERS"
004
get learn personal (deo:
substr(85,1,7)
subscr (Ace
title "Listing of PERSONAL {with masked values)";
int data=personal nochs,
Chapter 13 Solutions
sa3-1;
array Ques(5) $ Q1-05;
do i= ito 5
@ slate (ou! 54322 »
end,5380 Learning SAS by Example: A Programmer's Guide
title ‘hist of SURVEYL (rescaled) ";
proe print data=surveyl
s13-3;
data nonines:
‘set learn-nines:
array nuna(*) numeric;
Go i= 1 to ain(numa)
Af mums(i) = 992 then
call missing (nums(i))
ena;
drop iy
title thisting of NONINES";
proc print datasnonines:
+1325;
data passing:
array pass_score(5) _temporary_
(55,70, 80, 52,68)
array Score(S);
imput ID: $3. 8:
NunberPassed = 0;
do Test = 1 te 5
NurberPassed + (Score(Test) ge pass.
ena;
Grop Test;
Gatalines;
o01 90 88 92 95 90
002 64 66. 77:72: 72
003 68 59 80.75 70
008 88 77-5 77 67
ssorel-seores
title “Listing of PASSING";
proc print data=passing:
id ipsSolutions to Odd. Numbered Problems 581
Chapter 14 Solutions
Chapter 15 Solutions
“1
title "Tirst 5 Observacions from Bleed Data sec?
proc report data=learn.blood{obs=5} nowa headline;
column Subject WBC RBC;
define Subject / display “subject Number* width=7;
WBC / ‘White Blood Celle" widen=¢ format=connas.0
REC / "Rea Blood Cella mate5.2;5382 Learning SAS by Example: A Programmer's Guide
15-3;
title "Denonstrating a Compute Block";
proc report data-learn.hosp (obs=5) now headline;
column Subject AdmicDate DOB Age;
define AdnitDate / display *Adnission Date" width=10;
Gedine boz / display;
Gefine Subject / diaplay wide!
Gefine Age / computed “Age at Adnigaion" ;
compute Age;
Age = round (yrdif(D0B, AdnicDate, 'Actual'});
endconp;
quit:
15-5;
title tpatient age Groups!
proc report data-learn. bloodpressure nowd;
colunn Gender Age AgeGroup;
Gefine Gender 7 width=s.
define Age / display wide!
define AgeGroup / computed "Age Group";
compute AgeGroup / character lengt!
AE Age gt 50 chen AgeGroup = "> 50";
else if not missing(Age) chen AgeGroup =
endeomp;
uit:
s1s-7;
title "Mean Cholesterol by Gender and Blood Type";
proc report data=learn.blood nowd headline
‘column Blood?ype Chol:
Serine 7 group wide!
Gefine Bloodtype / group "Blood Type" width=5
define Chol / analysis mean "Kean cholesterol"
width=11 format
quit:
s18-9;
sitle ‘Report on the suvey Data sett;
proc report data-Tearn.aurvey nowd headline
column 1D Age Gender Salary Quesi-quess AveResponse;
define 1D / display width=4;
define Age / display wide!
Gefine Gender / display wide!
define Salary / display widch-10 format-dollario.;
Gefine Quesl / display noprinc;Solutions to Odd-Numbered Problems 583
gues2
define Ques’
Gefine Quesé / display nopri
gue:
/ display noprint;
‘Tals solution will cause an automatic
AveResponse = mean(of Quesi-guesS)
endeomp;
To avoid the automatic
tne code below £
che
aveResponse
ft (guesl
nput (Ques? ,
put (Ques3 /1.)7
nput (Ques’,1.) 7
= input (Quess/1.);
AveResponse = mean(of 1-95)
endcorp:
define AveResponse / com
sd "Average Response" wi
Chapter 16 Solutions
s16-1;584 Learning SAS by Example: A Programmer's Guide
var ClasaRank GPA,
16-3;
proc sort data-learn.college out-college;
by Schoolsize:
title "statistics on the college bata set - Using BY";
citle2 "Broken down by School Size*
proc means datascollese
median
maxde
by Schoolsize;
var ClassRank GPA;run;
title “Statistics on the College Data set ~ Using CLASS";
title? “Broken down by School Size";
proc means data-learn. college
median
min
class 5:
var ClassRank GPA;
“16-5;
proc format
value rank 0-50 = ‘Bottom Half!
S174 = ‘Third quartiles
75-100 = ‘Top Quarter";
sitle ‘Statistica on the College bata set";
titie2 *Broken down by School Size*
proc means data=learn.college
class Clasexank
var GPA?
format ClageRank rank. ;Solutions to Odd-Numbered Problems 588
v6
proc mean data-learn.college noprint chartype:
class Gender Schoolsize;
var ClassRank GPA;
at outesunmary
grand (drop= size)
bygender (arop=Schoo1size)
byaize (drop=sende
GRAND";
datasgrand nooks
bygender noobs;
ag of BI
TZE*
datashysize noobs;
Chapter 17 Solutions
title "One-way Prequencie:
roe freq dat ‘a.blood,
tables Gender Blocdlype AgeGroup / nocum nopercent;586 Learning SAS by Example: A Programmer's Guide
e2 "Wi
proc freq da
tables
title "Demonstrating the MISSING option*;
22 ‘With MISSING Option"
oc freq dataslearn blood;
tables Chel / nocun missing;
format Chol cholaxp
va7-5;
value rank Lo
ow to 70
“high = ‘71 and higher
format ClagsRane
sare;
title "Blood Types in Decreasing Frequency order"
proc freq datalearn.blood order=trea:
tables Bloodtype / nocum nopercent;
Chapter 18 Solutions
s1a-1;
options fm earn) ;
fe "Demographics from COLLEGE Data set";
tabulate datanle ‘lege format=5.;
lass Gender Scholarship Schoolsize;
tables Genders: allSolutions to Odd. Numbered Problems 587
keylabel ne! ';
18-3;
proc format;
value {gender 'F* = ‘Fenale’
we = oMale’;
title "Denographics from COLLEGE Data set";
proc tabulate datazlearn.college forma
class Gender Scholarship SchoolSize;
tables (Gender all) (Scholarship all),
Schoolsize all / =ts=25;
keylabel nz!
ALL = ‘focal’
format Gender ¢gence
18-5;
title "Descriptive stavistics*;
proc tabulate datazlearn.college fozmat=6.1;
class Gender;
var GPA,
fables GPAt (ats<4
ean min max)
Gender all;
keylabel n= 'Nunber"
all = ‘Total’
s18-7;
title "Nore Descriptive statistics"
proc tabulate dataslearn.college formate7.1 noseps;
class Gender Schoolsize;
var GPA ClassRank;
tables Schoolsize all,
GBAY (median min max)
ClassRank* (median
keylabel all = ‘Terai’
negian = ‘Median’
rin = 'inimum
max = ‘Maximum’;
label ClassRank = ‘Class Rank!
Schoolsize ~ ‘Senocl size!
maxtf=7.)/ ree=15588 Learning SAS by Example: A Programmer's Guide
18-9;
title’ "Denonstrating Colum Percents";
© value Seende:
lass Gender Scholarsnip,
cables
format Gender $gender.:
Chapter 19 Solutions
si9-t;
ons fmtsearch= (lea!
listing close;
i file = '¢:\bocks\learning\e
fe "Sending 0
ol Lege (ob:
proc means dataslearn.college n mean maxd
var GPA Classxank:
eas
eds listing
close;
*19-3;
ods lis
odsSolutions to Odd-Numbered Problems 589
“var GPA Classlank;
lege n mean maxdec=2;
goptions reset-all
earn. bicycles
quit:
*20-3;
ibution of sales*;
n value-aolia590 Learning SAS by Example: A Programmer's Guide
12000 by 2000
sales by Mo
proc gchart &
yar Country / subgroup = Model;
"20-7;
ons fmtsearch= (learn);
/* che learn library ¢:\books\learning
2 where the formate for COLLEGE are
kept
pattern value = empty:
citle ‘Ave:
\ge GPA by Size of Scho:
proc gchart data=learn.college,
vbar SchoolSize / sunvar = GPA type = mean;
120-8
title “stock Prices by Time*;
symbol valuedot izsm;
prec gplot data=learn. stocks:
Chapter 21 Solutions
saat;
a probe1_Solutions to Odd. Numbered Problems 591
title thisting of PROB21_1*
proc print data=probal_i noobs;
e213;
data prob2i_3;
indile '2:\books\te:
input Scorel 1-2
Score? 1-6
Scores
dng\sccres_colunn. txt! pad;
title "Listing of PRoa21!
proc print Gata-pron2l_? nochay
waa-s;
title ‘sunnary Report from BICYCLES Data set";
data prob21_s;
get learn-bicycles end=lastrec;
Docalunice + unicey
Sum_of_Sales + TotalSales;
file print;
Sf lagtrec chen
put
*Potal Units Sold is * TotalUaits conmalo. /
"sales Total is * Sun_o¢_sales dollarid.0;
sant;
data prob2i_t;
indile '2:\books\e:
ing\fileA.txt*
Af last_of_a then Infile ‘c:\books\learning\file_B.cxt'
Fivscobs=2;
input x y 2:
title tListing of PROB2i_7*
roe print data-probal_7
121-9;
data prob21_9;
filenane xyzfiles ('c: \books\le:
te: \books \1e:
infile xyzfiles,
input x y 27592. Learning SAS by Example: A Programmer's Guide
title "Listing of PRoB2is
ob2i_s
inZile ‘2: \books \learning\three_ver,
G1 (HRI-HRS) (3. +8)
ee BPS} (3. +8)
27 (DBPL-DBPS) (3. +6);
Chapter 22 Solutions
saat;
value high_sbp low - <140 = ‘Normal’
140 - high = “High sB2*;
value high dbp low - <20 =
90 - hi
title ‘Frequencies on SBP and DBP";
roe req data-learn bloodpressure;
tables SBP DBP / nocum nopercent
format SBP high_sbp
DBP
122-3;
value high sbp Tow - <140 = ‘Normal’
149 ~ Aigh = ‘High spe;
value high_@bp low - <90 = ‘Normal’
loode:
Group = put (SBP/high_sbp.)
put (DBP, high dep.)Solutions to Odd. Numbered Problems 593
title "Listing of BLOODPRESSURE';
proc print date-blocdpressure noobs:
22-5;
proc format:
invalue Sconvert
oes Et
66 - 75 = 1c
16 - 65 = 1B
85 - high
other = |
gata lettergrades;
Intile ‘c:\books\learning\nungrades.cxt'
input ID $ LecterGrade Seonvert. 00;
title “Listing of LEPTERGRADES*;
proc print data-lettergrades nocbey
soa-7;
data control;
et learn-dxcodes (rename=(Dx = Start
Description = Label)};
retain fmtnane 'Sdxcodes’ Type °C";
proc Zommat entlinscontrol,
select Sdxcodes,
122-9;
proc format
value muggle
‘oLjani990'd = '31dec2006"a = ‘Too Barly!
o2jan2005'd - ‘3idec2005¢d = (mmadyyi0.]
02jan2007'd - high = ‘Too Late’;
title "Listing of Gym";
proc print data=learn.gym noob:
format Date muggle. ;594 Learning SAS by Example: A Programmer's Guide
Chapter 23 SolutionsSolutions to Odd. Numbered Problems 598
title ‘histing of LasT?RrcH*
proe print data=lastprice noobs,
20-3;
proc sort data-learn.dailyprices
by Symbol Date
aca countit
set dailyprices;
by syrbol;
Af first. Symbol then N_Days
Nays + 1;
42 last symbol;
keep Symbol N_Days,
jaityprices:
title "Listing of commit;
proc print data=countit noobs;
28-5;
proc sort data-learn.dailyprices ow
by Symbol Date;
daca firet_ia
set dailyprices;
hy Symbol;
retain FirstPrice;
Sf iret. Symbol and las<.symbol then delete
Af firet Symbol then FirstPrice = Price
Af lagt.Symbol then do;
Dif! = Price ~ F:
outpes,
ena;
keep Synbol Price Diff;
jailyprices:
title ‘Listing of FIRS?_Las?*;
proc print data=first_last noobs;
126.7;
proc sort data=learn.dailyprices ou!
by Synbol Date;
data Sizet_lass,
set dailyprices,
by Symbol
Sf firet.Symbol and last.Symbol then delete;596 Learning SAS by Example: A Programmer's Guide
pitt = ait(2rice)
£ not first.symbol then out
keep Symbol Price Diff;
"LAS?* ;
first_last noobs;
Chapter 25 Solutions
25-1;
title “Listing produced on ksysday, ksysdave? at ksystine";
proe print data=learn.atecks{obs=5) noobs;
(+ noms
Of the fis
of observations
Gnobs observations from *
proe print datastdan (ob:
mend 8:
unobs) noobs
ay
earn. fitness nway 1
RestPulse MaxPulse;
/ autonane:
pull;
summary;
call symput ("6
call symput ('GrandRest' /RestPulse_mean) ;
call gymput (‘GrandMax' ,MaxPulse_mean) :
randPine' ,Mimemile_mean} ;
PMimeMile = round(100*7imemsle/scrangrine) ;Solutions to Odd. Numbered Problems 597
00*ReatPulee/agrandneat|
Chapter 26 Solutions
106
Cle ‘observations from INVENTORY where Price > 20°
ice gt 20;
create table nsales a
select Name, Totalsales
from Lear
waere Region eq ‘North’
Weight
r.Sub! as Rightsubl,598 Learning SAS by Example: A Programmer's Guide
title thisting of BOTH
proe print datasboth noobs;
/* alternate code
proe eal;
creace cable hoch as
select 1.Subj as Lectsubj
Height
Weight
r.Subj as Rightsubj,
salary
from learn. left as 1,
learn right as =
waere left Subj = right subj
eit
title *histing of BOTH
prot print data=both noobs;
werpare 2)
proc eal;
creace table Hoth as
select 1-Sub! as Leftsubj
Height
Weight
= .Sub! as Rightsuhi,
salary
from learn.left az 1 full join
Learn right as
on left Subj = righ
quit
title “Listing of BoTHt
proc print datasboth noobs;
veepare 3;
roe eal
create table both as
select 1.Subj as Leftsubj
Height
Weight,
r.Subj as Rightsubj,
salary
from learn. left as 1 left joinSolutions to Odd. Numbered Problems 599
learn.right as =
on Left.Subj = right. subj;
uit:
title "Listing of LEFT
proc print datasboth necks;
126-7;
proe sal;
create table third a
select *
from learn, first union all corresponding
Select *
from learn. second;
eit
title ‘Listing of THIRD";
proc print data-third;
*26-9;
proc eal;
create Cable percentages as
gelect Subject,
RBC,
pc,
mean (RBC) as Meankec,
mean(WBC) as MeaniEC,
100*REC / calculated Meank#C as Percent_Ruc,
Losec / calculated Meanh2C az 2ercent wae
from learn.blsed(obs=10)
quit
title "Listing of PERCENTAGES";
proc print dataspercentages