library(tidyverse)
library(DT)6 IOL Rankings
6.1 Packages Needed
6.2 Load IOL Players
iols <- read.csv("data/players.csv") %>% filter(position == "G" | position == "C")6.3 Load Necessary CSV Files
blocking <- read.csv("data/offense_blocking.csv") %>%
select(player_id, grades_pass_block, grades_run_block, pbe) # pb grade, rb grade, pbe
run_blocking <- read.csv("data/ol/offense_run_blocking.csv") %>%
select(player_id, zone_grades_run_block, gap_grades_run_block) # zone grade, gap grade6.4 Combine Datasets
iol_values <- iols %>%
left_join(blocking, by = c("id" = "player_id")) %>%
drop_na()
iol_values <- iol_values %>%
left_join(run_blocking, by = c("id" = "player_id")) %>%
drop_na()
iol_values <- iol_values %>%
rename(pb_grade = grades_pass_block, rb_grade = grades_run_block, zone_grade = zone_grades_run_block, gap_grade = gap_grades_run_block) %>%
select(-id)6.5 Get Mean Values (for testing)
mean(iol_values$pb_grade)[1] 76.06596
mean(iol_values$rb_grade)[1] 68.56383
mean(iol_values$pbe)[1] 98.54043
mean(iol_values$zone_grade)[1] 69.59149
mean(iol_values$gap_grade)[1] 63.51064
6.6 Create Rating Function
get_iol_ratings <- function(input_df) {
df_iol_copy <- input_df %>% mutate(
pb_grade = round(pmax(pmin((pb_grade-65) / 2, 10), 0), 2), # 65-85, mean 75
rb_grade = round(pmax(pmin((rb_grade-65) / 2, 10), 0), 2), # 65-85, mean 75
pbe = round(pmax(pmin((pbe-95) * 2.5, 10), 0), 2), # 95-99, mean 97
zone_grade = round(pmax(pmin((zone_grade-65) / 2, 10), 0), 2), # 65-85, mean 75
gap_grade = round(pmax(pmin((gap_grade-55) / 2, 10), 0), 2), # 55-75, mean 65
)
return(df_iol_copy)
}6.7 Create Final Dataset
iol_ratings <- get_iol_ratings(iol_values) %>%
mutate(total = rowSums(select(.,-name, -position, -team, -rank))) %>%
arrange(-total) #%>%
#mutate(pos_rank_aft = row_number())6.8 Display Ratings
datatable(iol_ratings)