Proc report

Post on 14-Jun-2015

631 views 4 download

description

SAS, Proc Report and tagsets in a nutshell. Everything you need to get started using Proc Report.

Transcript of Proc report

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/

Eric@EricGebhart.com

Resources