R/get_record_against_winning_teams.R

#' @title Get Record Against Wining Teams
#' @description gets record against winning teams
#' @keywords nba.com api
#' @importFrom magrittr %>%
#' @export get_record_against_winning_teams
#' @examples
#' get_record_against_winning_teams(team_stats_df)


get_record_against_winning_teams <- function(team_stats_df, season) {

  team_stats_df <- team_stats_df %>%
    dplyr::mutate(w_pct_winners = NA)

  team_ids <- c('1610612737','1610612738','1610612751','1610612766','1610612741','1610612739',
                '1610612742','1610612743','1610612765','1610612744','1610612745','1610612754',
                '1610612746','1610612747','1610612763','1610612748','1610612749','1610612750',
                '1610612740','1610612752','1610612760','1610612753','1610612755','1610612756',
                '1610612757','1610612758','1610612759','1610612761','1610612762','1610612764')
  team_codes <- c('ATL','BOS','BKN','CHA','CHI','CLE','DAL','DEN','DET','GSW','HOU','IND',
                  'LAC','LAL','MEM','MIA','MIL','MIN','NOP','NYK','OKC','ORL','PHI','PHX',
                  'POR','SAC','SAS','TOR','UTA','WAS')

  team_code_df <- data.frame(team_id = team_ids, team_code = team_codes, stringsAsFactors = F)

  winners <- team_stats_df %>%
    dplyr::filter(w_pct > 0.5) %>%
    dplyr::mutate(team_id = as.character(team_id)) %>%
    dplyr::select(team_id)

  for (i in 1:30) {

    game_log_url <- paste0('https://stats.nba.com/stats/teamgamelog?',
                  'TeamID=',team_stats_df$team_id[i],
                  '&Season=',season,'&SeasonType=','Regular%20Season')

    game_log_json <-
      curl::curl(game_log_url) %>%
      jsonlite::fromJSON()

    game_log_df <- data.frame(game_log_json$resultSets$rowSet[[1]], stringsAsFactors = F)
    names(game_log_df) = tolower(game_log_json$resultSets$headers[[1]])

    game_log_clean <- game_log_df %>%
      tidyr::separate(matchup, c('col1', 'opponent'), sep = "([\\@\\.])") %>%
      dplyr::select(-col1) %>%
      dplyr::mutate(opponent = stringr::str_trim(opponent)) %>%
      dplyr::left_join(team_code_df, by=c("opponent" = "team_code")) %>%
      dplyr::rename(team_id = team_id.x, opponent_id = team_id.y) %>%
      dplyr::inner_join(winners, by = c('opponent_id' = 'team_id'))

    print(team_stats_df$team_name[i])
    pct <- nrow(subset(game_log_clean, wl=='W')) / nrow(game_log_clean)
    print(pct)
    team_stats_df$w_pct_winners[i] <- pct

    Sys.sleep(runif(n=1,min = 0.5,max = 2))

  }

  return(team_stats_df)

}
emilykuehler/basketballstatsR documentation built on May 31, 2019, 10:01 a.m.