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

hackathon24-white-horiz.png

The 2025 SAS Hackathon has begun!

It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.

Latest Updates

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

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