The NFL Reloads: Using R to Have a Look

May 14, 2014
By

(This article was first published on Fear and Loathing in Data Science, and kindly contributed to R-bloggers)

NFL Draft 2014

It can’t be easy being a Jacksonville Jaguars fan. It seems that management has learned nothing from the Blaine Gabbert debacle. By that I mean I’m not impressed with their first round pick Blake Bortles. Bucky Brooks of NFL.com called him a “developmental prospect”. Developmental? Is that what you want from the third overall pick? I hate to say it but I have to agree with Skip Bayless that Bortles is the new Gabbert in J-Ville. We shall see soon enough if I will eat these words!
At any rate, I’ve downloaded draft data from the web and you can explore the draft at your own leisure. I scrapped it off of wikipedia at this link: http://en.wikipedia.org/wiki/2014_NFL_Draft
I put together some code to get you on your way to exploring

attach(nfldraft)
str(nfldraft)
## 'data.frame': 256 obs. of 8 variables:
## $ round : int 1 1 1 1 1 1 1 1 1 1 ...
## $ pick : int 1 2 3 4 5 6 7 8 9 10 ...
## $ team : Factor w/ 32 levels "Arizona Cardinals",..: 13 29 15 4 23 2 30 8 18 11 ...
## $ player : Factor w/ 256 levels "Aaron Colvin ",..: 96 89 25 204 147 97 178 131 12 84 ...
## $ position : Factor w/ 18 levels "C","CB","DE",..: 3 11 13 18 9 11 18 2 9 17 ...
## $ college : Factor w/ 113 levels "Alabama","Arizona",..: 86 6 99 15 12 95 95 71 100 62 ...
## $ conference: Factor w/ 24 levels "ACC","Big 12",..: 21 21 24 1 11 21 21 2 17 1 ...
## $ notes : Factor w/ 88 levels "","from Arizona[R1 - 5]",..: 1 86 1 20 1 1 1 51 9 1 ...
names(nfldraft)
## [1] "round" "pick" "team" "player" "position"
## [6] "college" "conference" "notes"
mytable = table(position, round)  #create a table of player position and round 
selected
mytable
## round
## position 1 2 3 4 5 6 7
## C 0 1 2 2 2 2 1
## CB 5 1 2 9 4 7 5
## DE 2 3 3 2 5 3 4
## DT 2 3 4 3 3 1 4
## FB 0 0 0 0 0 1 1
## FS 0 0 0 0 0 0 2
## G 0 1 6 1 4 2 0
## K 0 0 0 0 0 0 2
## LB 5 3 3 5 6 2 7
## OLB 0 0 0 0 2 1 0
## OT 5 4 3 1 1 3 4
## P 0 0 0 0 0 1 0
## QB 3 2 0 2 2 5 0
## RB 0 3 5 5 0 4 2
## S 4 1 2 4 3 1 0
## SS 0 0 0 0 0 1 2
## TE 1 3 3 0 1 0 2
## WR 5 7 3 6 3 5 5
margin.table(mytable)  #generic table with sum...not very useful
## [1] 256
margin.table(mytable, 1)  #sum of positions selected
## position
## C CB DE DT FB FS G K LB OLB OT P QB RB S SS TE WR
## 10 33 22 20 2 2 14 2 31 3 21 1 14 19 15 3 10 34

margin.table(mytable, 2)  #sum of players selected by round
## round
## 1 2 3 4 5 6 7
## 32 32 36 40 36 39 41

mosaicplot(mytable, main = "Position by Round", xlab = "Position"
ylab = "Round", cex.axis = 1)  #you can use mosaicplot to graphically 
represent the data in the table










What if you want to drill-down on a specific team or the like? Here is some simple code to examine a specific team, in this case the Colts:

colts = nfldraft[which(nfldraft$team == "Indianapolis Colts"), ]  #select the 
rows of data unique to the Colts

colts.table = table(colts$round, colts$position)

margin.table(colts.table, 2)
##
## C CB DE DT FB FS G K LB OLB OT P QB RB S SS TE WR
## 0 0 1 0 0 0 0 0 1 0 2 0 0 0 0 0 0 1

barplot(colts.table)











There you have it. With some quick modifications to the above, you could produce tables examining players selected by conference, college etc.

To leave a comment for the author, please follow the link and comment on their blog: Fear and Loathing in Data Science.

R-bloggers.com offers daily e-mail updates about R news and tutorials on topics such as: Data science, Big Data, R jobs, visualization (ggplot2, Boxplots, maps, animation), programming (RStudio, Sweave, LaTeX, SQL, Eclipse, git, hadoop, Web Scraping) statistics (regression, PCA, time series, trading) and more...



If you got this far, why not subscribe for updates from the site? Choose your flavor: e-mail, twitter, RSS, or facebook...

Comments are closed.

Sponsors

Never miss an update!
Subscribe to R-bloggers to receive
e-mails with the latest R posts.
(You will not see this message again.)

Click here to close (This popup will not appear again)