library(tidyverse)
library(DT)10 ED Rankings
10.1 Packages Needed
10.2 Load ED Players
eds <- read.csv("data/players.csv") %>% filter(position == "ED")10.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_p10.4 Combine Datasets
ed_values <- eds %>%
left_join(defense, by = c("id" = "player_id")) %>%
drop_na()
ed_values <- ed_values %>%
left_join(prsh_defense, by = c("id" = "player_id")) %>%
drop_na()
ed_values <- ed_values %>% left_join(run_defense, by = c("id" = "player_id")) %>% drop_na()
ed_values <- ed_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)10.5 Get Mean Values (for testing)
mean(ed_values$miss_p)[1] 17.51064
mean(ed_values$rdef_grade)[1] 73.05532
mean(ed_values$prsh_grade)[1] 77.98723
mean(ed_values$prsh_win_p)[1] 15.51915
mean(ed_values$prp)[1] 8.408511
mean(ed_values$run_stop_p)[1] 6.940426
10.6 Create Rating Function
get_ed_ratings <- function(input_df) {
df_ed_copy <- input_df %>% mutate(
prsh_grade = round(pmax(pmin((prsh_grade-70) / 2, 10), 0), 2), # 70-90, mean 80
rdef_grade = round(pmax(pmin((rdef_grade-65) / 2, 10), 0), 2), # 65-85, mean 75
prsh_win_p = round(pmax(pmin((prsh_win_p-10), 10), 0), 2), # 10-20, mean 15
run_stop_p = round(pmax(pmin((run_stop_p-4)*2, 10), 0), 2), # 4-9, mean 6.5
prp = round(pmax(pmin((prp-6)/1.2, 5), 0), 2), # 6-12, mean 9, worth 5
miss_p = round(pmax(pmin(((100-miss_p)-75) / 3, 5), 0), 2), # 25-10, mean 17.5, worth 5
)
return(df_ed_copy)
}10.7 Create Final Dataset
ed_ratings <- get_ed_ratings(ed_values) %>%
mutate(total = rowSums(select(.,-name, -position, -team, -rank))) %>%
arrange(-total) #%>%
#mutate(pos_rank_aft = row_number())10.8 Display Ratings
datatable(ed_ratings)