BookmarkSubscribeRSS Feed
tc
Lapis Lazuli | Level 10 tc
Lapis Lazuli | Level 10

SuperBowlLVIIIQBs.png

 

Time for the Super Bowl LVIII quarterback boxplot matchup, kids! More QB stats for Brock Purdy and Patrick Mahomes at NFL.com.

 

* Fun With SAS ODS Graphics: Super Bowl LVIII QB Boxplot Tale of the Tape (Purdy vs. Mahomes)
  Football markers courtesy of Bruno Landowski thenounproject.com/icon/football-243375/;

proc import file='~/QBLVIII.xlsx' dbms=xlsx out=qb replace; * Grab 2023 regular/postseason QB stats (copied-and-pasted from NFL.com); 

%SGANNO;  * Anotate chart with NFL.com potos of Burrow, Stafford using SAS-provided macros;         
data qbpics;
%SGIMAGE (image="/home/ted.conway/Mahomes.png",drawspace="DATAVALUE",xc1="Patrick Mahomes",y1=-18,height=140,heightunit="DATA",anchor="BOTTOM");
%SGIMAGE (image="/home/ted.conway/Purdy.png",drawspace="DATAVALUE",xc1="Brock Purdy",y1=-18,height=140,heightunit="DATA",anchor="BOTTOM");

proc sql; * Only create labels for highest and lowest passing yardage games;
create table qb3 as select qb.*, case when yds=minyds or yds=maxyds then Yds end as Yds2
from qb join (select qb, min(yds) as minYds, max(yds) as maxYds from qb group by 1) as qb2 on qb.qb=qb2.qb;

proc sgplot data=qb3 noautolegend sganno=qbpics noborder nowall;  * Annotated box + scatter plot of passing yardage in each game of 2023 season; 
inset "SUPER BOWL LVIII" / textattrs=(size=14pt weight=bold) position=top;
symbolimage name=football image='/home/ted.conway/football.png'; * Use football image for scatterplot markers;
scatter y=YDS x=QB / datalabel=yds2 datalabelpos=left markerattrs=(symbol=football size=24pt) transparency=0; * Markers with passing yards in each of the 2023 games (pre- and post-season);
vbox YDS / category=QB boxwidth=.25 nofill meanattrs=(color=red symbol=diamondfilled); * Boxplot to show distributions (quartiles + mean);
xaxis display=(noline noticks nolabel) discreteorder=data; 
yaxis display=all label="PASSING YARDS IN EACH 2023 REGULAR SEASON GAME" min=-20 offsetmin=0;
inset "QB" "PASSING" "MATCHUP" / valuealign=center textattrs=(size=12pt weight=bold) position=bottom;
run;

 

SAMPLE DATA

DataSample.jpg

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 0 replies
  • 573 views
  • 4 likes
  • 1 in conversation