R/point_calcs.R

Defines functions CalculatePointsTotal CalculatePoints

Documented in CalculatePoints CalculatePointsTotal

#' Create Point sums by player
#'
#'
#' @export
#'


#usecase <- "FTA"
#FTA_Rules <- scoring_rules[[paste0(usecase)]]




CalculatePoints <- function(inputData = c("pbp_agg_season","pbp_agg_week",
                                "pbp_avg_season", "pbp_avg_week")){

  sum_col <- c("completions", "attempts", "interceptions", "passing_yards", "passing_tds",
               "passing_2pt_conversions", "passing_incomp", "passing_ypg", "pass_300_yds", "pass_350_yds", "pass_400_yds",
               "carries", "rushing_yards", "rushing_tds", "rushing_fumbles_lost",
               "rushing_2pt_conversions", "rush_100_yds", "rush_150_yds", "rush_200_yds",
               "receptions", "receiving_yards", "receiving_tds", "receiving_2pt_conversions",
               "rec_100_yds", "rec_150_yds", "rec_200_yds","sacks")
  out = inputData %>% mutate(
    completions = scoring_rules[[paste0(usecase)]][["pass"]][["pass_comp"]] * completions,
    attempts = scoring_rules[[paste0(usecase)]][["pass"]][["pass_att"]] * attempts,
    passing_ypg = (scoring_rules[[paste0(usecase)]][["pass"]][["pass_ypg"]] * ((passing_yards/games)-100)),
    passing_incomp = scoring_rules[[paste0(usecase)]][["pass"]][["pass_inc"]] * (attempts - completions),
    pass_300_yds = case_when(passing_yards >=300 & passing_yards <350 ~
                               scoring_rules[["FTA"]][["pass"]][["pass_300_yds"]],
                             TRUE ~ 0),
    pass_350_yds = case_when(passing_yards >=350 & passing_yards <400 ~
                               scoring_rules[["FTA"]][["pass"]][["pass_350_yds"]],
                             TRUE ~ 0),
    pass_400_yds = case_when(passing_yards >=400 ~ scoring_rules[["FTA"]][["pass"]][["pass_400_yds"]],
                             TRUE ~ 0),
    passing_yards = (scoring_rules[[paste0(usecase)]][["pass"]][["pass_yds"]] * passing_yards),
    passing_tds = scoring_rules[[paste0(usecase)]][["pass"]][["pass_tds"]] * passing_tds,
    interceptions = scoring_rules[[paste0(usecase)]][["pass"]][["pass_int"]] * interceptions,

    carries = scoring_rules[[paste0(usecase)]][["rush"]][["rush_att"]] * carries,
    rush_100_yds = case_when(rushing_yards >=300 & rushing_yards <350 ~
                               scoring_rules[["FTA"]][["rush"]][["rush_100_yds"]],
                             TRUE ~ 0),
    rush_150_yds = case_when(rushing_yards >=350 & rushing_yards <400 ~
                               scoring_rules[["FTA"]][["rush"]][["rush_150_yds"]],
                             TRUE ~ 0),
    rush_200_yds = case_when(rushing_yards >=400 ~ scoring_rules[["FTA"]][["rush"]][["rush_200_yds"]],
                             TRUE ~ 0),
    rushing_yards = scoring_rules[[paste0(usecase)]][["rush"]][["rush_yds"]] * rushing_yards,
    rushing_tds = scoring_rules[[paste0(usecase)]][["rush"]][["rush_tds"]] * rushing_tds,

    receptions = scoring_rules[[paste0(usecase)]][["rec"]][["rec"]] * receptions,
    rec_100_yds = case_when(receiving_yards >=300 & receiving_yards <350 ~
                              scoring_rules[["FTA"]][["rec"]][["rec_100_yds"]],
                            TRUE ~ 0),
    rec_150_yds = case_when(receiving_yards >=350 & receiving_yards <400 ~
                              scoring_rules[["FTA"]][["rec"]][["rec_150_yds"]],
                            TRUE ~ 0),
    rec_200_yds = case_when(receiving_yards >=400 ~ scoring_rules[["FTA"]][["rec"]][["rec_200_yds"]],
                            TRUE ~ 0),
    receiving_yards = scoring_rules[[paste0(usecase)]][["rec"]][["rec_yds"]] * receiving_yards,
    receiving_tds = scoring_rules[[paste0(usecase)]][["rec"]][["rec_tds"]] * receiving_tds,

    rushing_fumbles_lost = scoring_rules[[paste0(usecase)]][["misc"]][["fumbles_lost"]] *
      rushing_fumbles_lost,
    receiving_fumbles_lost = scoring_rules[[paste0(usecase)]][["misc"]][["fumbles_lost"]] *
      receiving_fumbles_lost,
    sacks = scoring_rules[[paste0(usecase)]][["misc"]][["sacks"]] * sacks,
    passing_2pt_conversions = scoring_rules[[paste0(usecase)]][["misc"]][["two_pts"]] *
      passing_2pt_conversions,
    rushing_2pt_conversions = scoring_rules[[paste0(usecase)]][["misc"]][["two_pts"]] *
      rushing_2pt_conversions,
    receiving_2pt_conversions = scoring_rules[[paste0(usecase)]][["misc"]][["two_pts"]] *
      receiving_2pt_conversions) %>%
    relocate(passing_ypg, .before = passing_air_yards)

  out$Total_Points <- rowSums(out[ , c(sum_col)], na.rm=TRUE)
  out = as_tibble(out)

}

#' Create Point filter to id and total
#'
#'
#' @export
#'

CalculatePointsTotal <- function(){
  PointsSum = CalculatePoints(pbp_agg_season)
  PointsSum = PointsSum %>% filter(between(season, 2018, 2020)) %>%
  select(-c(gsis_id,season, recent_team, team, position)) %>%
  group_by(mfl_id, name) %>%
  summarise(across(everything(), list(mean))) %>%
  mutate_if(is.numeric, round, digits=2)
names(PointsSum) <- names(PointsSum) %>% gsub("_1", "", .)
data.table::setnames(PointsSum, old = 'mfl_id',new = 'id')
PointsSum = PointsSum %>% ungroup() %>% select(c(id ,Total_Points)) %>% as_tibble()
}
RandalMorris/AnalyticsFootball documentation built on Dec. 18, 2021, 9:52 a.m.