Offensive Tackle Example

This is a basic example which shows you how to solve a common problem:

if (!requireNamespace('pacman', quietly = TRUE)){
  install.packages('pacman')
}
pacman::p_load_current_gh("saiemgilani/recruitR")

pacman::p_load(tidyverse)

Let’s say that we are interested in seeing how many offensive tackles in the 2020 recruiting cycle were:

  • located in Florida
  • located in the states bordering Florida
  • ranked inside the top 1000
FL_OTs <- cfbd_recruiting_player(2020, recruit_type = 'HighSchool', state='FL', position ='OT')
GA_OTs <- cfbd_recruiting_player(2020, recruit_type = 'HighSchool', state='GA', position ='OT')
AL_OTs <- cfbd_recruiting_player(2020, recruit_type = 'HighSchool', state='AL', position ='OT')
SE_OTs <- dplyr::bind_rows(FL_OTs, GA_OTs, AL_OTs)

SE_OTs_1k <- SE_OTs %>% 
  dplyr::filter(ranking < 1000) %>% 
  dplyr::arrange(ranking)

SE_OTs_1k %>% 
  dplyr::select(ranking, name, committed_to, position, 
         height, weight, stars, rating, city, state_province)
##    ranking              name   committed_to position height weight stars rating
## 1       11   Broderick Jones        Georgia       OT   77.0    298     5 0.9947
## 2       38     Tate Ratledge        Georgia       OT   78.0    322     4 0.9821
## 3       74      Myles Hinton       Stanford       OT   78.0    308     4 0.9662
## 4      110   Marcus Dumervil            LSU       OT   77.0    305     4 0.9515
## 5      128      Jalen Rivers          Miami       OT   78.0    331     4 0.9425
## 6      157 Issiah Walker Jr.        Florida       OT   76.0    309     4 0.9308
## 7      271      Joshua Braun        Florida       OT   78.0    335     4 0.9049
## 8      318 Connor McLaughlin       Stanford       OT   79.0    260     4 0.8968
## 9      333      Javion Cohen        Alabama       OT   77.0    295     4 0.8951
## 10     491      Cayden Baker North Carolina       OT   78.0    260     3 0.8789
## 11     530     Austin Blaske        Georgia       OT   77.0    278     3 0.8759
## 12     538   Michael Rankins   Georgia Tech       OT   77.0    295     3 0.8755
## 13     562   Jordan Williams   Georgia Tech       OT   78.0    310     3 0.8742
## 14     577        Brady Ward       Ole Miss       OT   79.0    310     3 0.8729
## 15     614    Trey Zimmerman North Carolina       OT   78.0    294     3 0.8709
## 16     658     Gerald Mincey        Florida       OT   77.0    320     3 0.8681
## 17     752         Jake Wray       Colorado       OT   77.0    300     3 0.8643
## 18     934      Joshua Jones       Kentucky       OT   76.5    304     3 0.8559
## 19     953        Wing Green   Georgia Tech       OT   79.0    285     3 0.8552
## 20     971   Kobe McAllister     Cincinnati       OT   78.0    275     3 0.8551
##               city state_province
## 1         Lithonia             GA
## 2             Rome             GA
## 3         Norcross             GA
## 4  Fort Lauderdale             FL
## 5      Orange Park             FL
## 6            Miami             FL
## 7         Live Oak             FL
## 8            Tampa             FL
## 9      Phenix City             AL
## 10      Fort Myers             FL
## 11          Guyton             GA
## 12          Ruskin             FL
## 13     Gainesville             GA
## 14          Mobile             AL
## 15         Roswell             GA
## 16 Fort Lauderdale             FL
## 17        Marietta             GA
## 18     Phenix City             AL
## 19        Leesburg             GA
## 20        Ringgold             GA

Plotting the Offensive Tackles by State

You can also create a plot:

SE_OTs_1k$stars <- factor(SE_OTs_1k$stars,levels = c(5,4,3,2))

SE_OTs_1k_grp <- SE_OTs_1k %>%
  dplyr::group_by(state_province, stars) %>%
  dplyr::summarize(players = dplyr::n()) %>% 
  dplyr::ungroup()
## `summarise()` has grouped output by 'state_province'. You can override using the `.groups` argument.
ggplot(SE_OTs_1k_grp ,aes(x = state_province, y = players, fill = factor(stars))) +
  geom_bar(stat = "identity",colour='black') +
  xlab("State") + ylab("Number of Players") +
  labs(title="Top 1000 Offensive Tackles in FL, GA, and AL - Class of 2020",
       subtitle="Figure: @SaiemGilani | Data: @CFB_data with #recruitR")+
  geom_text(aes(label = players),size = 4, position = position_stack(vjust = 0.5))+
  scale_fill_manual(values=c("dodgerblue2","lightskyblue","red3","ghostwhite"))+
  theme(legend.title = element_blank(),
        legend.text = element_text(size = 12, margin=margin(t=0.2,r=0,b=0.2,l=-1.2,unit=c("mm")), 
                                   family = "serif"),
        legend.background = element_rect(fill = "grey85"),
        legend.key.width = unit(1.5,"mm"),
        legend.key.size = unit(2.0,"mm"),
        legend.position = c(0.25, 0.84),
        legend.margin=margin(t = 0.4,b = 0.4,l=-1.2,r=0.4,unit=c('mm')),
        legend.direction = "horizontal",
        legend.box.background = element_rect(colour = "#500f1b"),
        axis.title.x = element_text(size = 12, margin = margin(0,0,1,0,unit=c("mm")), 
                                    family = "serif",face="bold"),
        axis.text.x = element_text(size = 10, margin=margin(0,0,1,0,unit=c("mm")),
                                   family = "serif"),
        axis.title.y = element_text(size = 12, margin = margin(0,0,0,0,unit=c("mm")), 
                                    family = "serif",face="bold"),
        axis.text.y = element_text(size = 12, margin = margin(1,1,1,1,unit=c("mm")), 
                                    family = "serif"),
        plot.title = element_text(size = 14, margin = margin(t=0,r=0,b=1.5,l=0,unit=c("mm")),
        lineheight=-0.5, family = "serif",face="bold"),
        plot.subtitle = element_text(size = 12, margin = margin(t=0,r=0,b=2,l=0,unit=c("mm")), 
                                     lineheight=-0.5, family = "serif"),
        plot.caption = element_text(size = 12, margin=margin(t=0,r=0,b=0,l=0,unit=c("mm")),
                                    lineheight=-0.5, family = "serif"),
        strip.text = element_text(size = 10, family = "serif",face="bold"),
        panel.background = element_rect(fill = "grey75"),
        plot.background = element_rect(fill = "grey65"),
        plot.margin=unit(c(top=0.4,right=0.4,bottom=0.4,left=0.4),"cm"))