Upload
eagebhart
View
630
Download
4
Embed Size (px)
DESCRIPTION
SAS, Proc Report and tagsets in a nutshell. Everything you need to get started using Proc Report.
Citation preview
Proc Report, the right tool for jobEric Gebhart
Summary Reports
Statistics
Detail Reports
Compute Blocks
PROC REPORT data= SAS-data-set options NOWD; COLUMNS variable_1 .... variable_n; DEFINE variable_1; . . . DEFINE variable_n;
COMPUTE blocks BREAK ... ; RBREAK ... ; RUN;
Starting Simple
Columns
Define
Proc Report data=sashelp.class nowd; columns name sex age height weight;
define name / display ‘Name’ width=10; define sex / display ‘Gender’ width=6; define age / display ‘Age’ width=4; define height / analysis ‘Height’ format=8.1; define weight / analysis ‘Weight’ format=8.1; run;
GROUP DISPLAY ANALYSIS ORDER ACROSS COMPUTED
Column Types
Group & Compute
Mean Weight & Height
Compute a New Column
Summarize Mean
Proc Report data=sashelp.class nowd; columns name sex age height weight ratio;
define name / display ‘Name’ width=10; define sex / display ‘Gender’ width=6; define age / display ‘Age’ width=4; define height / analysis mean ‘Height’ format=8.1; define weight / analysis mean ‘Weight’ format=8.1; define ratio / computed format=6.2; compute ratio; ratio = height.mean / weight.mean; endcompute; rbreak after / summarize; run;
rbreak after / summarize;
Group & Compute
Group by Sex
Break After Sex
Proc Report data=sashelp.class nowd; columns sex name age height weight ratio;
define name / display ‘Name’ width=10; define sex / group ‘Gender’ width=6; define age / display ‘Age’ width=4; define height / analysis mean ‘Height’ format=8.1; define weight / analysis mean ‘Weight’ format=8.1; define ratio / computed format=6.2; compute ratio; ratio = height.mean / weight.mean; endcompute; break after sex / summarize; run;
break after sex / summarize;
Percentage of Weight
Column Alias
Analysis With No Print
Compute Before
Summarize with Style
Proc Report data=sashelp.class nowd; columns sex name age height weight weight=weight2 weight_pct; define name / display ‘Name’ width=10; define sex / group ‘Gender’ width=6; define age / display ‘Age’ width=4; define height / analysis mean ‘Height’ format=8.1; define weight / analysis noprint ‘Weight’ format=8.1; define weight2 / analysis mean 'Weight' format=8.1; define weight_pct / computed '% of Weight' format=8.2; compute weight_pct; weight_pct = weight.sum / weight_sum; endcompute;
compute before sex; weight_sum = weight.sum; endcompute;
break after sex / summarize style=header; run;
Weight2
Percentage Bars
Slider Tagset
Style Over Rides
Slide bar Percentages
ods tagsets.slider file='example6.html' style=slider;
Proc Report data=sashelp.class nowd ; columns sex name age height weight weight=weight2 weight_pct; define sex / group 'Gender' width=6; define name / display 'Name' width=10; define age / display 'Age' width=4; define height / analysis mean 'Height' format=8.1; define weight / analysis noprint format=8.1; define weight2 / analysis mean 'Weight' format=8.1; define weight_pct / computed '% of Weight'
format=Percent6. left style(column)=bar[tagattr="slider"];
format=Percent6. leftstyle(column)=bar[tagattr="slider"];
Survey Report
Survey Tagset
Group By Question
Order By Department
Line Statement
cards;The computer I have is adequate for my needs Design 10 30 13% 50% 37% 2002The computer I have is adequate for my needs Marketing 20 30 10% 40% 50% 2002The computer I have is adequate for my needs Devel 10 50 19% 60% 21% 2002The computer I have is adequate for my needs Pubs 40 20 10% 67% 23% 2002The Software on my computer is always up to date Design 10 30 5% 48% 47% 2002The Software on my computer is always up to date Marketing 40 40 10% 50% 40% 2002The Software on my computer is always up to date Devel 10 30 23% 74% 3% 2002The Software on my computer is always up to date Pubs 50 60 17% 35% 47% 2002....
Simple Data
PROC REPORT DATA=test SPLIT="/" HEADLINE HEADSKIP CENTER nowd;by year;
COLUMN question ( dept ( diff valid pct1 pct2 pct3 ) );define question / order noprint;DEFINE dept / ORDER FORMAT= $16. WIDTH=16 SPACING=2 LEFT "ITEMS" style=header;DEFINE diff / DISPLAY FORMAT= BEST9. WIDTH=9 SPACING=2 center "Diff % Fav";DEFINE valid / SUM FORMAT= BEST9. WIDTH=7 SPACING=2 center "Valid N" ;DEFINE pct1 / SUM FORMAT= PERCENT6. WIDTH=6 SPACING=2 center "Unfavorable" style=UnFav[tagattr="start"];DEFINE pct2 / SUM FORMAT= PERCENT6. WIDTH=6 SPACING=2 center "Neutral" style=Neutral[tagattr="in"];DEFINE pct3 / SUM FORMAT= PERCENT6. WIDTH=6 SPACING=2 center "Favorable" style=Fav[tagattr="end"];
break before question /;compute before question / style=Question[just=left] ; line question $80.;endcomp;
Drill Down Report
Summary Report
Detail Reports
Compute HyperLinks
proc report data=work.bptrial nowd split='\';
column patient drug sex fever nausea rash reaction;
define patient / group; define drug / group; define sex / group; define fever / analysis sum noprint; define nausea / analysis sum noprint; define rash / analysis sum noprint; define reaction / computed 'Reaction?';
compute before patient; ptno + 1; endcomp;
compute patient; urlstring = "rephow2det.htm#pt" || left(put(ptno,3.0)); call define (_col_, 'url', urlstring ); endcomp;run;
Create a URLAnchor Counter
ods html body = "rephow2det.htm" anchor = "pt1";
proc report data=work.bptrial nowd split='\';
column patient drug sex visitdate ("Blood Pressure" systolic slash diastolic) ("Reactions" fever nausea rash;
....
Anchor To Match
File To Match
http://ericgebhart.com
http://support.sas.com/rnd/base/topics/odsmarkup/
Resources