11  DL Rankings

11.1 Packages Needed

library(tidyverse)
library(DT)

11.2 Load DL Players

dls <- read.csv("data/players.csv") %>% 
  filter(position == "DI")

11.3 Load Necessary CSV Files

defense <- read.csv("data/defense_summary.csv") %>% 
  select(player_id, missed_tackle_rate, grades_pass_rush_defense, grades_run_defense) # miss %, prsh_grade, rdef_grade
prsh_defense <- read.csv("data/pass_rush_summary.csv") %>% 
  select(player_id, pass_rush_win_rate, prp) # prsh_win_p, prp
run_defense <- read.csv("data/run_defense_summary.csv") %>% 
  select(player_id, stop_percent) # run_stop_p

11.4 Combine Datasets

dl_values <- dls %>% 
  left_join(defense, by = c("id" = "player_id")) %>% 
  drop_na()
dl_values <- dl_values %>% 
  left_join(prsh_defense, by = c("id" = "player_id")) %>% 
  drop_na()
dl_values <- dl_values %>% 
  left_join(run_defense, by = c("id" = "player_id")) %>% 
  drop_na()
dl_values <- dl_values %>% 
  rename(miss_p = missed_tackle_rate, rdef_grade = grades_run_defense, prsh_grade = grades_pass_rush_defense, prsh_win_p = pass_rush_win_rate, run_stop_p = stop_percent) %>%
  select(-id)

11.5 Get Mean Values (for testing)

mean(dl_values$miss_p)
[1] 13.46
mean(dl_values$rdef_grade)
[1] 74.85714
mean(dl_values$prsh_grade)
[1] 66.01143
mean(dl_values$prsh_win_p)
[1] 7.088571
mean(dl_values$prp)
[1] 3.768571
mean(dl_values$run_stop_p)
[1] 7.605714

11.6 Create Rating Function

get_dl_ratings <- function(input_df) {
  df_dl_copy <- input_df %>% mutate(
    prsh_grade = round(pmax(pmin((prsh_grade-60) / 2, 10), 0), 2),  # 60-80, mean 70
    rdef_grade = round(pmax(pmin((rdef_grade-60) / 3, 10), 0), 2), # 60-90, mean 75
    prsh_win_p = round(pmax(pmin((prsh_win_p-4)*1.25, 10), 0), 2), # 4-12, mean 8
    run_stop_p = round(pmax(pmin((run_stop_p-4)*1.67, 10), 0), 2), # 4-10, mean 7
    prp = round(pmax(pmin((prp-2), 5), 0), 2), # 2-7, mean 4.5, worth 5
    miss_p = round(pmax(pmin(((100-miss_p)-82) / 1.8, 5), 0), 2), # 18-9, mean 13.5, worth 5
  )
  
  return(df_dl_copy)
}

11.7 Create Final Dataset

dl_ratings <- get_dl_ratings(dl_values) %>% 
  mutate(total = rowSums(select(.,-name, -position, -team, -rank))) %>% 
  arrange(-total) #%>%
  #mutate(pos_rank_aft = row_number())

11.8 Display Ratings

datatable(dl_ratings)