R/skater_pairings.r

Defines functions add_line_combos get_pairings

Documented in add_line_combos get_pairings

#'Get Pairings
#'
#'Create line combinations based on play-by-play data
#'
#'@param pbp A raw RTSS data file
#'@param roster A data frame containing a player_name and player_position column
#'@param side 'home' or 'away' denotes side of the ice to create
#'@param position 'F' or 'D' pertaining to a position on the ice. Also accepts 'All'
#'
#'@author Eric Fastner (eric.fastner@@gmail.com)
#'@export
get_pairings <- function(pbp, roster, side, position){

  if (tolower(side) == 'home' | tolower(side) == 'h'){
    playerlist <-
      pbp %>%
      select(
        "home_on_1",
        "home_on_2",
        "home_on_3",
        "home_on_4",
        "home_on_5",
        "home_on_6"
      ) %>%
      gather(key = "Key",
             value = "player_name")

  } else if(tolower(side) == 'away' | tolower(side) == 'a'){
    playerlist <-
      pbp %>%
      select(
        "away_on_1",
        "away_on_2",
        "away_on_3",
        "away_on_4",
        "away_on_5",
        "away_on_6"
      ) %>%
      gather(key = "Key",
             value = "player_name")
  }

  positionlist <-
    roster %>%
    filter(player_name %in% playerlist$player_name) %>%
    select(player_name, player_position)

  completelist <-
    left_join(playerlist, positionlist) %>%
    filter(player_position != 'G')

  if (tolower(position) == 'all' | tolower(position) == 'a'){
    return(paste(sort(completelist$player_name), collapse = '|'))
  } else if (tolower(position) == 'f'){
    forwardlist <-
      filter(completelist, player_position %in% c('R', 'L', 'C'))

    return(paste(sort(forwardlist$player_name), collapse = '|'))
  } else if (tolower(position) == 'd'){
    defenselist <-
      filter(completelist, player_position %in% 'D')

    return(paste(sort(defenselist$player_name), collapse = '|'))

  } else {return('ERROR: Side parameter must be either "All", "F", or "D"')}

}

#'Add Line Combinations
#'
#'Add line combinations for all skaters and append to pbp data
#'
#'@param pbp A raw RTSS data file
#'@param roster A data frame containing a player_name and player_position column
#'
#'@author Eric Fastner (eric.fastner@@gmail.com)
#'@export
add_line_combos <- function(pbp, roster){
  for (i in 1:nrow(pbp)){
    PP_Data[i, "Home_Pairings_5"] <- get_pairings(pbp = pbp, roster = roster, side = 'h', position = 'All')
    PP_Data[i, "Away_Pairings_5"] <- get_pairings(pbp = pbp, roster = roster, side = 'a', position = 'All')

    PP_Data[i, "Home_Pairings_Forwards"] <- get_pairings(pbp = pbp, roster = roster, side = 'h', position = 'F')
    PP_Data[i, "Away_Pairings_Forwards"] <- get_pairings(pbp = pbp, roster = roster, side = 'a', position = 'F')

    PP_Data[i, "Home_Pairings_Defense"] <- get_pairings(pbp = pbp, roster = roster, side = 'h', position = 'D')
    PP_Data[i, "Away_Pairings_Defense"] <- get_pairings(pbp = pbp, roster = roster, side = 'a', position = 'D')
  }
}
EFastner/icescrapR documentation built on Jan. 15, 2022, 1:11 p.m.