/*------------------------------------------------------------------- */ /* Introduction to Data Mining Using SAS Enterprise Miner */ /* by Patricia B. Cerrito */ /* Copyright(c) 2006 by SAS Institute Inc., Cary, NC, USA */ /* */ /* ISBN-13: 978-1-59047-829-5 */ /* ISBN-10: 1-59047-829-0 /*-------------------------------------------------------------------*/ /* */ /* This material is provided "as is" by SAS Institute Inc. There */ /* are no warranties, expressed or implied, as to merchantability or */ /* fitness for a particular purpose regarding the materials or code */ /* contained herein. The Institute is not responsible for errors */ /* in this material as it now exists or will exist, nor does the */ /* Institute provide technical support for it. */ /* */ /*-------------------------------------------------------------------*/ /* Questions or problem reports concerning this material may be */ /* addressed to the author: */ /* */ /* SAS Institute Inc. */ /* SAS Press */ /* Attn: Patricia Cerrito */ /* SAS Campus Drive */ /* Cary, NC 27513 */ /* */ /* */ /* If you prefer, you can send email to: saspress@sas.com */ /* Use this for subject field: */ /* Comments for Patricia Cerrito */ /* */ /*-------------------------------------------------------------------*/ Chapter 2 Section 2.3 Page 68 data sasuser.transformsurvey; set sasuser.revisedstudentsurvey; if abstractalgebra<0 then abstractalgebra=0; if actuarialscience<0 then actuarialscience=0; if differentialequations<0 then differentialequations=0; if realanalysis<0 then realanalysis=0; if discretemathematics<0 then discretemathematics=0; if statistics<0 then statistics=0; if probability<0 then probability=0; if numbertheory<0 then numbertheory=0; if topology<0 then topology=0; preference=abstractalgebra+actuarialscience+differentialequations+ realanalysis+discretemathematics+statistics+probability+number theory+topology; run; Page 69 proc kde data=sasuser.transformsurvey; univar preference/gridl=0 gridu=10 out=sasuser.kdepreference; run; Page 70 data sasuser.transformsurvey1; set sasuser.transformsurvey; applied=statistics+probability+actuarialscience+differential equations; pure=realanalysis+discretemathematics+topology+numbertheory; run; proc kde data=sasuser.transformsurvey1; univar applied/gridl=0 gridu=5 out=sasuser.kdeapplied; univar pure/gridl=0 gridu=5 out=sasuser.kdepure; run; data sasuser.kdemathpreference; length var $ 32 value 8 density 8 count 8; set sasuser.kdeapplied sasuser.kdepure ; keep var value density count; run; Page 72 proc kde data=sasuser.transformsurvey1; bivar applied pure/out=sasuser.kdeappliedpure; run; Page 72 proc sql; create view work.sort616 as select applied,density,pure from eclib000.kdebivarappliedpure; quit; goptions xpixels=&_egchartwidth ypixels=&_egchartheight; axis1 style=1 width=1 minor=none label=(font='microsoft sans serif' height=12pt justify=right) ; axis2 style=1 width=1 minor=none label=(font='microsoft sans serif' height=12pt justify=center) ; axis3 style=1 width=1 minor=none ; title; title1 "surface plot"; footnote; footnote1 "generated by the SAS System (&_sasservername, &sysscpl) on %sysfunc(date(), eurdfde9.) at %sysfunc(time(), timeampm8.)"; proc g3d data=work.sort616; plot pure * applied = density / zaxis=axis1 xaxis=axis2 yaxis=axis3 xytype=0 style=4 grid rotate=70 tilt=70 ctop=blue cbottom=red ; run; quit; Page 73 proc sort data=sasuser.revisedstudentsurvey; by student_type; proc kde data=sasuser.revisedstudentsurvey; univar hours/gridl=0 gridu=40 out=sasuser.kdehours; by student_type; run; Page 74 proc sort data=sasuser.revisedstudentsurvey; by courselevel; proc kde data=sasuser.revisedstudentsurvey; univar hours/gridl=0 gridu=25 out=sasuser.kdehours; by courselevel; run; Chapter 3 Section 3.2 Page 85 data sasuser.adhdclusterdesctrial; data sasuser.adhdclusterdesc (keep=_cluster_ clus_desc); set emws.text2_cluster; run; proc print; var _cluster_ clus_desc; run; Section 3.3 Page 90 %tmfilter(url=http://directory.google.com/Top/Health/Conditions_and_Diseases/Infectious_Diseases/Viral/Influenza/?tc=1, depth=2,dir=c:\vaccine\dir, destdir=c:\vaccine\destdir,norestrict=1, dataset=work.vaccinewebcrawl); run; %tmfilter(url=http://dmreview.com, depth=4,dir=c:\business\dir, destdir=c:\business\destdir,norestrict=1, dataset=work.business); run; Page 91 %tmfilter(url=http://www.sas.com/technologies/analytics/datamining/ index.html, depth=4,dir=c:\sugi\dir, dataset=sasuser.sugiwebcrawl); run; filename fetch 'd:\Avian'; filename SXLEMAP 'E:\M2004 CD\tmpubmed\pubmed.map'; libname fetch2 xml xmlmap=SXLEMAP access=READONLY; run; Section 3.7 Page 110 %tmfilter (dir=C:\Documents and Settings\Administrator\My Documents\FederalistPapers, dataset=sasuser.fedwebcrawl); run; Chapter 4 Section 4.2 Page120 proc means data=sasuser.medications mean std n min max median; var RXSF01X RXMR01X RXMD01X RXPV01X RXVA01X RXTR01X RXOF01X RXSL01X RXWC01X RXOT01X RXOR01X RXOU01X RXXP01X; attrib _all_ label=' '; run; Page 121 proc kde data=sasuser.medications; univar RXSF01X/out=sasuser.kderxsf01x method=srot gridl=0 gridu=250; univar RXMR01X/out=sasuser.kderxmr01x method=os gridl=0 gridu=250; univar RXPV01X/out=sasuser.kderxpv01x method=srot gridl=0 gridu=250; univar RXXP01X/out=sasuser.kderxxp01x method=srot gridl=0 gridu=500; run; Page 122 proc kde data=sasuser.medications; univar RXSF01X/out=sasuser.kderxsf01x method=srot bwm=10 gridl=0 gridu=250; univar RXMR01X/out=sasuser.kderxmr01x method=os bwm=10 gridl=0 gridu=250; univar RXPV01X/out=sasuser.kderxpv01x method=srot bwm=10 gridl=0 gridu=250; univar RXXP01X/out=sasuser.kderxxp01x method=srot bwm=10 gridl=0 gridu=500; run; Section 4.3 Page 123 proc sort data=sasuser.medications; by duid; proc means data=sasuser.medications std n min max median; var RXSF01X RXMR01X RXMD01X RXPV01X RXVA01X RXTR01X RXOF01X RXSL01X RXWC01X RXOT01X RXOR01X RXOU01X RXXP01X; by duid; output out=sasuser.sumofmedications; sum= mean= /autoname; attrib _all_ label=''; run; Page 124 proc kde data=sasuser.sumofmedications; univar rxsf01x_sum/gridl=0 gridu=500 out=sasuser.kdeselfpaysum method=srot; univar rxmr01x_sum/gridl=0 gridu=500 out=sasuser.kdemedicaresum method=os; univar rxpv01x_sum/gridl=0 gridu=1000 out=sasuser.kdeprivatepaysum method=srot; univar rxxp01x_sum/gridl=0 gridu=5000 out=sasuser.kdetotalsum method=srot; run; Page 125 data sasuser.ratioofpayment; set sasuser.sumofmedications; length duid 8 _type_ 8 costratio 8 _freq_ 8 RXSF01X_Sum 8 RXMR01X_Sum 8 RXMD01X_Sum 8 RXPV01X_Sum 8 RXVA01X_Sum 8 RXTR01X_Sum 8 RXOF01X_Sum 8 RXSL01X_Sum 8 RXWC01X_Sum 8 RXOT01X_Sum 8 RXOR01X_Sum 8 RXOU01X_Sum 8 RXXP01X_Sum 8 RXSF01X_Mean 8 RXMR01X_Mean 8 RXMD01X_Mean 8 RXPV01X_Mean 8 RXVA01X_Mean 8 RXTR01X_Mean 8 RXOF01X_Mean 8 RXSL01X_Mean 8 RXWC01X_Mean 8 RXOT01X_Mean 8 RXOR01X_Mean 8 RXOU01X_Mean 8 RXXP01X_Mean 8; costratioselfpay= RXSF01X_Sum/RXXP01X_Sum; costratioprivatepay=RXPV01X_sum/RXXP01X_sum; costratiomedicare=RXMR01X_sum/RXXP01X_sum; run; proc kde data=sasuser.ratioofpayment; univar costratioselfpay/gridl=0 gridu=1 out=sasuser.kdecostratioselfpay method=os; univar costratioprivatepay/gridl=0 gridu=1 out=sasuser.kdecostprivatepay method=os; univar costratiomedicare/gridl=0 gridu=1 out=sasuser.kdecostmedicare method=os; run; Page 126-127 data sasuser.kdecombined; length var $ 32 value 8 density 8 count 8; set sasuser.kdecostratioselfpay sasuser.kdecostprivatepay; keep var value density count; run; PROC SQL; CREATE VIEW WORK.SORT7265 AS SELECT VALUE,DENSITY,VAR FROM sasuser.KDECOSTSELFANDPRIVATE; QUIT; GOPTIONS xpixels=&_EGCHARTWIDTH ypixels=&_EGCHARTHEIGHT; SYMBOL1 INTERPOL=JOIN HEIGHT=1 VALUE=NONE CV=BLUE LINE=1 WIDTH=2 ; SYMBOL2 INTERPOL=JOIN HEIGHT=1 VALUE=NONE CV=GREEN LINE=1 WIDTH=2 ; Legend1 FRAME POSITION=(BOTTOM CENTER OUTSIDE) LABEL=(FONT='Microsoft Sans Serif' HEIGHT=8pt JUSTIFY=Left) ; Axis1 STYLE=1 WIDTH=1 MINOR=NONE LABEL=(FONT='Microsoft Sans Serif' HEIGHT=12pt JUSTIFY=Right) ; Axis2 STYLE=1 WIDTH=1 MINOR=NONE LABEL=(FONT='Microsoft Sans Serif' HEIGHT=12pt JUSTIFY=Center) ; TITLE; TITLE1 "Line Plot"; FOOTNOTE; FOOTNOTE1 "Generated by the SAS System (&_SASSERVERNAME, &SYSSCPL) on %SYSFUNC(DATE(), EURDFDE9.) at %SYSFUNC(TIME(), TIMEAMPM8.)"; PROC GPLOT DATA=WORK.SORT7265; PLOT DENSITY * VALUE=VAR / VAXIS=AXIS1 HAXIS=AXIS2 FRAME LEGEND=LEGEND1 ; Section 4.4 Page 128 proc freq data=sasuser.medications; tables RXNAME; run; Page 132-133 data sasuser.clusternamescopy (keep=_cluster_ _freq_ _rmsstd_ clus_desc); set emws.text2_cluster; run; data sasuser.desccopy (drop=_svd_1-_svd_500 _roll_1-_roll_1000 prob1-prob500); set emws.text2_documents; run; proc sort data=sasuser.clusternamescopy; by _cluster_; proc sort data=sasuser.desccopy; by _cluster_; data sasuser.medicationswithdescriptionscopy2; merge sasuser.clusternamescopy sasuser.desccopy; by _CLUSTER_; run; Section 4.6 Page 141 data sasuser.classes; set sasuser.classes; label GRADE_recoded = "Recoded Values of GRADE"; select(left(trim(put(GRADE,$F2.)))); when('') GRADE_recoded = .; when('A') GRADE_recoded = 4; when('A+') GRADE_recoded = 4; when('A-') GRADE_recoded = 4; when('AU') GRADE_recoded = .; when('B') GRADE_recoded = 3; when('B+') GRADE_recoded = 3; when('B-') GRADE_recoded = 3; when('C') GRADE_recoded = 2; when('C+') GRADE_recoded = 2; when('C-') GRADE_recoded = 2; when('CR') GRADE_recoded = .; when('D') GRADE_recoded = 1; when('D+') GRADE_recoded = 1; when('D-') GRADE_recoded = 1; when('F') GRADE_recoded = 0; when('H') GRADE_recoded = .; when('I') GRADE_recoded = .; when('NC') GRADE_recoded = .; when('NR') GRADE_recoded = .; when('P') GRADE_recoded = .; when('S') GRADE_recoded = .; when('U') GRADE_recoded = .; when('W') GRADE_recoded = 0; when('X') GRADE_recoded = .; otherwise; end; run; Page 143 PROC SQL; CREATE TABLE SASUSER.reducedsummarytable AS SELECT gradebydept.DEPT FORMAT=$F4., gradebydept._WAY_, gradebydept._TYPE_, gradebydept._FREQ_, gradebydept.GRADEPOINT_Mean FORMAT=BEST12., gradebydept.GRADEPOINT_StdDev FORMAT=BEST12., gradebydept.GRADEPOINT_Min FORMAT=BEST12., gradebydept.GRADEPOINT_Max FORMAT=BEST12., gradebydept.GRADEPOINT_N FROM EC100012.gradebydept AS gradebydept WHERE gradebydept.GRADEPOINT_Mean>0; QUIT; Page 144 PROC SQL; CREATE TABLE SASUSER.lowgradeaverages AS SELECT sasuser.generaled FORMAT=$F4., QURY5859._WAY_, QURY5859._TYPE_, QURY5859._FREQ_, QURY5859.GRADEPOINT_Mean FORMAT=BEST12., QURY5859.GRADEPOINT_StdDev FORMAT=BEST12., QURY5859.GRADEPOINT_Min FORMAT=BEST12., QURY5859.GRADEPOINT_Max FORMAT=BEST12., QURY5859.GRADEPOINT_N FROM SASUSER.QURY5859 AS QURY5859 WHERE QURY5859.GRADEPOINT_Mean < 1.9; QUIT; PROC PRINT DATA=WORK.SORT6442 OBS="Row number" LABEL ; VAR GRADEPOINT_Mean; ID DEPT; RUN; Page 146 PROC SQL; CREATE TABLE SASUSER.QURY4670 AS SELECT classesmodified.DEPT FORMAT=$F4., classesmodified.CRSENO FORMAT=BEST12., classesmodified.SECTNO FORMAT=$F4., classesmodified.CRHRS FORMAT=BEST12., classesmodified.GRADE FORMAT=$F2., classesmodified.AUDIT FORMAT=$F1., classesmodified.STRM FORMAT=$F4., classesmodified.STUID FORMAT=BEST12., classesmodified.course FORMAT=$F17., classesmodified.GRADEPOINT FORMAT=BEST12. FROM EC100043.classesmodified AS classesmodified WHERE ( classesmodified.DEPT IN ('ENGL', 'MATH', 'SPAN') AND classesmodified.CRSENO BETWEEN 100 AND 199); QUIT; Page 147 proc sort data=sasuser.genedengletc; by dept; proc kde data=sasuser.genedengletc out=sasuser.kdegened; univar gradepoint/gridl=0 gridu=4 out=sasuser.kdegened; by dept; run; Chapter 5 Section 5.5 Page 189 PROC SQL; CREATE TABLE SASUSER.gened AS SELECT classes.DEPT FORMAT=$F4., classes.CRSENO FORMAT=BEST12., classes.STUID FORMAT=BEST12., classes.course FORMAT=$F17. FROM EC100007.classes AS classes WHERE classes.CRSENO<=199; QUIT; Page 191 PROC SQL; CREATE TABLE SASUSER.mathstudents AS SELECT classes.DEPT FORMAT=$F4., classes.CRSENO FORMAT=BEST12., classes.STUID FORMAT=BEST12., classes.course FORMAT=$F17. FROM EC100012.classes AS classes WHERE (classes.DEPT='MATH' AND classes.CRSENO>299); QUIT; Page 192 PROC SQL; CREATE TABLE SASUSER.mathstudentcourses AS SELECT QURY5093.DEPT FORMAT=$F4., mathstudents.CRSENO FORMAT=BEST12., mathstudents.STUID FORMAT=BEST12., mathstudents.course FORMAT=$F17., classes.DEPT FORMAT=$F4. AS DEPT1, classes.CRSENO FORMAT=BEST12. AS CRSENO1, classes.STUID FORMAT=BEST12. AS STUID1, classes.course FORMAT=$F17. AS course1 FROM SASUSER.QURY5093 AS QURY5093 LEFT JOIN EC100014.classes AS classes ON (mathstudents.STUID= classes.STUID); QUIT; Section 5.6 Page 197 /* Sort the data on USER_ID. */ proc sort data= sasuser.librarysubset data out=work.ls;   by user_id; run; /* Create a SAS datetime value from the character DATETIME */ /* field. */ data ls2;   set ls;   date_time=compress(date_time,'[/');   sas_date_time=input(date_time,datetime.);   format sas_date_time datetime18.; where user_id ne ' '; run; /* Sort the data on both USER_ID and SAS_DATE_TIME to prepare */ /* for sequencing. */ proc sort data=ls2;   by user_id sas_date_time; run; /* Assign the SEQUENCE_NUM. */ data ls3;   set ls2;    by user_id sas_date_time;   if first.user_id then sequence_num=0;   sequence_num+1; run; Page 202 data sasuser.mathgradssequenced;   set sasuser.mathematicsgrads;    by stuid crseno;   if stuid_id then sequence_num=0;   sequence_num+1; run; Chapter 6 Section 6.2 Page 208 proc sort data=sasuser.originaldata out=work.sort_out; by duid rxname; run; data work.sort_out1; set work.sort_out; rxname = translate(left(trim(rxname)),'_',' '); run; proc transpose data=work.sort_out1 out=work.tran (drop=_name_ _label_) prefix=med_; var rxname ; by duid run; data work.concat(keep=duid rxname); length rxname $32767; set work.tran; array chconcat {*} med_:; rxname=left(trim(med_1)); do i=2 to dim(chconcat); rxname=left(trim(charges)) || ' ' || left(trim(chconcat[i])); end; run; proc sql; select max(length(rxname)) into :rxname_LEN from work.concat; quit; %put rxname_LEN=&rxname_LEN; data sasuser.medstextstrings; length rxname $ &rxname_LEN; set work.concat; run; proc contents data=sasuser.medtextstrings; run; Section 6.4 Page 212-213 PROC SQL; CREATE TABLE SASUSER.filteredmedications AS SELECT medications.DUID FORMAT=BEST12., medications.PID FORMAT=BEST12., medications.RXNAME FORMAT=$F50., FROM EC100007.medications AS medications WHERE medications.RXNAME IN ('ACTOS', 'AVANDIA', 'ASPIR 81', 'ASPIR-LOW', 'ASPIRIN', 'ASPIRIN (E.C.)', 'ASPIRIN (ENTERIC COATED)', 'ASPIRIN (ENTERIC-COATED)', 'ASPIRIN (UNBOXED)', 'ASPIRIN ADULT LOW STRENGTH', "ASPIRIN CHILDREN'S", "ASPIRIN CHILDREN'S (ORANGE)", 'ASPIRIN E.C.', 'ASPIRIN EC', 'ASPIRIN TRI-BUFFERED', 'ASPIRIN/BUTALBITAL/CAFFEINE', 'ASPIRIN/BUTALBITAL/CAFFEINE/CODEINE', 'ASPIRIN/CAFFEINE/ORPHENADRINE', 'ASPIRIN/CARISOPRODOL', 'FUROSEMIDE', 'GLUCOPHAGE', 'GLUCOPHAGE XR', 'GLUCOSAMINE', 'GLUCOSE', 'GLUCOMETER ELITE XL (DIABETES CARE SYSTEM)', 'GLUCOMETER ELITE', 'GLUCOMETER', 'GLYBURIDE', 'GLYBURIDE (UNIT OF USE)', 'GLYBURIDE 2.5MG(NOVOPH-M*100', 'GLYBURIDE 5 (COPLEY-D)', 'GLYBURIDE MICRO', 'GLYBURIDE MICRONIZ', 'GLYBURIDE MICRONIZE', 'LIPITOR', 'NORVASC', 'NOVOLIN', 'NOVOLIN 70/30', 'NOVOLIN 70/30 (SRN,PREFILLED)', 'NOVOLIN 70/30 (VIAL)', 'NOVOLIN 70/30 INSULIN', 'NOVOLIN INSULIN', 'NOVOLIN N', 'NOVOLIN N (VIAL)', 'NOVOLIN N (VIAL)', 'NOVOLIN N PENFILL (SRN)', 'NOVOLIN NPH', 'NOVOLIN R', 'NOVOLI N R (VIAL)', 'PRINIVIL', 'PRINIVIL (25X31 UNIBLISTER)', 'PRINIVIL (BULK PACKAGE)', 'PRINIVIL (UNIT OF USE)', 'PRINIVIL (UNIT OF USE, 12X90)', 'SIMAVASTATIN', 'SOFT TOUCH LANCETS', 'SOFTCLIX', 'SOFTCLIX LANCET', 'SOFTCLIX LANCETS', 'SURESTEP', 'SURESTEP (GLUCOSE)', 'SURESTEP CONTROL SOLN', 'SURESTEP SYSTEM', 'SURESTEP TEST STRIP', 'ZOCOR', 'ZOCOR (BULK PACKAGE)', 'ZOCOR (UNIT OF USE)'); QUIT; Page 214-215 proc print data=emws.text5_cluster; var clus_desc; run; data sasuser.insulinlink1 (keep=_cluster_ _freq_ _rmsstd_ clus_desc); set emws.text5_cluster; run; data sasuser.insulinlink2 (drop=_svd_1-_svd_500 _roll_1-_roll_1000 prob1-prob500); set emws.text5_documents; run; proc sort data=sasuser.insulinlink1; by _cluster_; proc sort data=sasuser.insulinlink2; by _cluster_; run; data sasuser.insulinlink; merge sasuser.insulinlink1 sasuser.insulinlink2 ; by _CLUSTER_; run; Page 217-218 PROC SQL; CREATE TABLE SASUSER.QURY3402 AS SELECT qury7340.DUID FORMAT=BEST12., (CASE qury7340.RXNAME WHEN 'ASPIR 81' THEN 'aspirin' WHEN 'ASPIR-LOW' THEN 'aspirin' WHEN 'ASPIRIN' THEN 'aspirin' WHEN 'ASPIRIN' THEN 'aspirin' WHEN 'ASPIRIN (ENTERIC COATED)' THEN 'aspirin' WHEN 'ASPIRIN (ENTERIC-COATED)' THEN 'aspirin' WHEN 'ASPIRIN (UNBOXED)' THEN 'aspirin' WHEN 'ASPIRIN ADULT LOW STRENGTH' THEN 'aspirin' WHEN "ASPIRIN CHILDREN'S" THEN 'aspirin' WHEN "ASPIRIN CHILDREN'S (ORANGE)" THEN 'aspirin' WHEN 'ASPIRIN E.C.' THEN 'aspirin' WHEN 'ASPIRIN EC' THEN 'aspirin' WHEN 'ASPIRIN TRI-BUFFERED' THEN 'aspirin' WHEN 'ASPIRIN/BUTALBITAL/CAFFEINE' THEN 'aspirin' WHEN 'ASPIRIN/BUTALBITAL/CAFFEINE' THEN 'aspirin' WHEN 'ASPIRIN/BUTALBITAL/CAFFEINE' THEN 'aspirin' WHEN 'ASPIRIN/CARISOPRODOL' THEN 'aspirin' WHEN 'GLUCOMETER' THEN 'glucometer' WHEN 'GLUCOMETER ELITE' THEN 'glucometer' WHEN 'GLUCOMETER ELITE XL (DIABETES CARE SYSTEM)' THEN 'glucometer' WHEN 'GLUCOPHAGE' THEN 'glucophage' WHEN 'GLUCOPHAGE XR' THEN 'glucophage' WHEN 'GLYBURIDE' THEN 'glyburide' WHEN 'GLYBURIDE (UNIT OF USE)' THEN 'glyburide' WHEN 'GLYBURIDE 2.5MG(NOVOPH-M*100' THEN 'glyburide' WHEN 'GLYBURIDE 5 (COPLEY-D)' THEN 'glyburide' WHEN 'GLYBURIDE MICRO' THEN 'glyburide' WHEN 'GLYBURIDE MICRONIZ' THEN 'glyburide' WHEN 'GLYBURIDE MICRONIZE' THEN 'glyburide' WHEN 'NOVOLIN' THEN 'insulin' WHEN 'NOVOLIN 70/30' THEN 'insulin' WHEN 'NOVOLIN 70/30 (SRN,PREFILLED)' THEN 'insulin' WHEN 'NOVOLIN 70/30 (VIAL)' THEN 'insulin' WHEN 'NOVOLIN 70/30 INSULIN' THEN 'insulin' WHEN 'NOVOLIN INSULIN' THEN 'insulin' WHEN 'NOVOLIN N' THEN 'insulin' WHEN 'NOVOLIN N (VIAL)' THEN 'insulin' WHEN 'NOVOLIN N PENFILL (SRN)' THEN 'insulin' WHEN 'NOVOLIN NPH' THEN 'insulin' WHEN 'NOVOLIN R' THEN 'insulin' WHEN 'NOVOLIN R (VIAL)' THEN 'insulin' WHEN 'PRINIVIL' THEN 'prinivil' WHEN 'PRINIVIL (25X31 UNIBLISTER)' THEN 'prinivil' WHEN 'PRINIVIL (BULK PACKAGE)' THEN 'prinivil' WHEN 'PRINIVIL (UNIT OF USE)' THEN 'prinivil' WHEN 'PRINIVIL (UNIT OF USE, 12X90)' THEN 'prinivil' WHEN 'SOFT TOUCH LANCETS' THEN 'Lancets' WHEN 'SOFTCLIX' THEN 'Lancets' WHEN 'SOFTCLIX LANCETS' THEN 'Lancets' WHEN 'SURESTEP' THEN 'Lancets' WHEN 'SURESTEP (GLUCOSE)' THEN 'Lancets' WHEN 'SURESTEP CONTROL SOLN' THEN 'Lancets' WHEN 'SURESTEP SYSTEM' THEN 'Lancets' WHEN 'SURESTEP TEST STRIP' THEN 'Lancets' WHEN 'ZOCOR' THEN 'zocor' WHEN 'ZOCOR (BULK PACKAGE)' THEN 'zocor' WHEN 'ZOCOR (UNIT OF USE)' THEN 'zocor' ELSE qury7340.RXNAME END) AS CC1, ('') AS RXNamecopy FROM EC100006.qury7340 AS qury7340; QUIT; Section 6.5 Page 236 data sasuser.courseclusternames (keep=_cluster_ _freq_ _rmsstd_ clus_desc); set emws.text_cluster; run; data sasuser.descourses (drop= _svd_1-_svd_100 prob1-prob100); set emws.text_documents; run; proc sort data=sasuser.courseclusternames; by _cluster_; proc sort data=sasuser.descourses; by _cluster_; run; data sasuser.courseclusters; merge sasuser.courseclusternames sasuser.descourses; by _cluster_; run; PROC SQL; CREATE TABLE SASUSER.QURY9620 AS SELECT classes.DEPT FORMAT=$F4., classes.CRSENO FORMAT=BEST12., classes.STUID FORMAT=BEST12., classes.course FORMAT=$F17., courseclusters._CLUSTER_ FORMAT=F4., courseclusters._FREQ_ FORMAT=F7., courseclusters._RMSSTD_, courseclusters.clus_desc, courseclusters.classname FORMAT=$F17., courseclusters.STUID FORMAT=BEST12. AS STUID1, courseclusters._DOCUMENT_, courseclusters._SVDLEN_ FROM EC100020.classes AS classes LEFT JOIN EC100021.courseclusters AS courseclusters ON (classes.STUID = courseclusters.STUID); QUIT; Chapter 7 Section 7.9 Page 295 PROC SQL; CREATE TABLE SASUSER.QURY7005 AS SELECT QURY4112.Clusterrevised, QURY4112.DUID FORMAT=BEST12., QURY4112._WAY_, QURY4112._TYPE_, QURY4112._FREQ_, QURY4112.RXSF01X_Sum FORMAT=BEST12., QURY4112.RXMR01X_Sum FORMAT=BEST12., QURY4112.RXMD01X_Sum FORMAT=BEST12., QURY4112.RXPV01X_Sum FORMAT=BEST12., QURY4112.RXVA01X_Sum FORMAT=BEST12., QURY4112.RXTR01X_Sum FORMAT=BEST12., QURY4112.RXOF01X_Sum FORMAT=BEST12., QURY4112.RXSL01X_Sum FORMAT=BEST12., QURY4112.RXWC01X_Sum FORMAT=BEST12., QURY4112.RXOT01X_Sum FORMAT=BEST12., QURY4112.RXOR01X_Sum FORMAT=BEST12., QURY4112.RXOU01X_Sum FORMAT=BEST12., QURY4112.RXXP01X_Sum FORMAT=BEST12. FROM SASUSER.QURY4112 AS QURY4112 WHERE QURY4112.Clusterrevised = 1; RUN; QUIT; Page 296 PROC SURVEYSELECT DATA=WORK.SORT1389 OUT=SASUSER.RAND176(LABEL="Random sample of SASUSER.QURY7051") METHOD=SRS RATE=0.1 ; ID Clusterrevised DUID RXSF01X_Sum RXMR01X_Sum RXMD01X_Sum RXPV01X_Sum RXVA01X_Sum RXTR01X_Sum RXOF01X_Sum RXSL01X_Sum RXWC01X_Sum RXOT01X_Sum RXOR01X_Sum RXOU01X_Sum RXXP01X_Sum; RUN; PROC SQL; DROP TABLE SASUSER.APND7547; DROP VIEW SASUSER.APND7547; QUIT; PROC SQL; CREATE TABLE SASUSER.APND7547 AS SELECT * FROM SASUSER.RAND176 OUTER UNION CORR SELECT * FROM EC100002.qury7005 ; Quit; Chapter 8 Section 8.2 Page 301 proc cluster data=sasuser.studentsurvey method=density r=2; var courselevel pure applied abstractalgebra numbertheory topology realanalysis discretemathematics differentialequations actuarialscience probability statistics; id id; run; proc tree horizontal spaces=2; id id; run; Page 302 proc fastclus data=sasuser.studentsurveyimputed maxclusters=4 list; var courselevel pure applied abstractalgebra numbertheory topology realanalysis discretemathematics differentialequations actuarialscience probability statistics; id id; run; Chapter 9 Section 9.3 Page 346 Libname sasuser "c:\Documents and Settings\Author\My Documents\My SAS Files\9.1"; Run; Proc hpf data=sasuser.electriccompany out=sasuser.hpfoutput; Id date interval=month; Forecast _all_; Run; Page 349 proc hpf data=sasuser.electriccompany out=sasuser.hpfoutput lead=18; id date interval=month; forecast _all_; run; proc hpf data=sasuser.electriccompany out=sasuser.hpfoutput lead=18; id date interval=month; forecast _all_/holdout=12; run; Page 350 proc hpf data=sasuser.electriccompany out=sasuser.hpfoutput lead=18; id date interval=month accumulate=total; forecast _all_ ; run; id date interval=year accumulate=total; Section 9.4 Page 350 Proc sort data=time_series_example; By newdate; Proc hpf data=time_series_example out=sasuser.outhpftransactionbyhour; Id newdate interval=hour accumulate=total; Forecast los; Run; Page 352 id newdate interval=hour accumulate=total; Page 353 data sasuser.newtimeseries; set sasuser.time_series_example; hour=hour(newdate); run; Page 354 proc means data=sasuser.newtimeseries n mean std min max; var LOS; class HOUR; output out=sasuser.hourlyaverage MEAN = / autoname; attrib _all_ label=''; run; Page 355 data sasuser.numberofarrivals; length Server $ 16 Arrival 8 LOS 8 newdate 8 hour 8; set sasuser.newtimeseries; Arrival=1; run; proc hpf data=sasuser.newtimeseries out=sasuser.hpfnumberofarrivals; id newdate interval=hour accumulate=total; forecast arrival; run; data sasuser.arrivalsbyhour; set sasuser.hpfnumberofarrivals; hour=hour(newdate); run; Page 356 proc means data=sasuser.arrivalsbyhour n mean std min max; var ARRIVAL; class HOUR; output out=sasuser.totalnumberofarrivals MEAN = / autoname; attrib _all_ label=''; run; proc hpf; id newdate interval=hour accumulate=nobs; forecast all; run; Page 357 proc hpf data=sasuser.time_series_with_regressors; out=sasuser.hpfwithregressors; id defineddate interval=hour; forecast _all_; run; proc autoreg data=sasuser.hpfwithregressors; model los=number_of_customers cumulative_entry_by_day cumulative_completion_by_day; output out=sasuser.losdynamic p=predicted; run; 19