#' @title Team Game Logs
#' @description gets team game logs from nba api
#' @keywords nba.com api team game logs
#' @importFrom magrittr %>%
#' @export get_team_game_log_stats
#' @export get_team_game_log_score
#' @export get_team_game_logs_multiple_teams
#' @examples
#' get_team_game_log()
#'
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')
code_id_df <- data.frame(team_code = team_codes, team_id = team_ids, stringsAsFactors = F)
get_team_game_log_stats <- function(team_id, season, season_type = 'Regular%20Season',
base_url = 'https://stats.nba.com/stats/teamgamelog?') {
game_log_url <- paste0(base_url,
'TeamID=', team_id,
'&Season=', season,
'&SeasonType=', season_type)
print(game_log_url)
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]])
return(game_log_df)
}
get_team_game_log_score <- function(team_id, season, season_type = 'Regular%20Season',
base_url = 'https://stats.nba.com/stats/teamgamelog?') {
game_log_df <- get_team_game_log_stats(team_id = team_id, season = season)
game_log_df <- game_log_df %>%
tidyr::separate(matchup, c('col1', 'opp_code'), sep = "([\\@\\.])") %>%
dplyr::select(team_id, game_id, game_date, opp_code, pts) %>%
dplyr::mutate(opp_code = stringr::str_trim(opp_code),
opp_pts = NA) %>%
dplyr::inner_join(code_id_df, by=c('opp_code'='team_code')) %>%
dplyr::rename(team_id = team_id.x, team_id_opp = team_id.y) %>%
dplyr::inner_join(code_id_df, by=c('team_id')) %>%
dplyr::select(team_code, team_id, game_date, game_id, opp_code, team_id_opp, pts, opp_pts)
for (i in 1:nrow(game_log_df)) {
opp_df <- get_team_game_log_stats(team_id = game_log_df$team_id_opp[i], season = season)
game_row <- opp_df %>%
dplyr::filter(game_id==game_log_df$game_id[i])
game_log_df$opp_pts[i] <- game_row$pts
print(game_log_df$game_date[i])
Sys.sleep(runif(1, min = 0.5, max = 2))
}
return (game_log_df)
}
get_team_game_logs_multiple_teams <- function(team_ids, season, season_type = 'Regular%Season') {
selected_team_df <- setNames(data.frame(matrix(ncol = 8, nrow = 0)),
c('team_code', 'team_id', 'game_date', 'game_id',
'opp_code','team_id_opp', 'pts', 'opp_pts'))
for (i in 1:length(team_ids)) {
curr_team_df <- get_team_game_log_score(team_id = team_ids[i], season = season, season_type = season_type)
selected_team_df <- selected_team_df %>%
dplyr::bind_rows(curr_team_df)
print('FINISHED FOR')
print(team_ids[i])
}
selected_team_df <- selected_team_df %>%
dplyr::mutate(pts = as.numeric(pts), opp_pts = as.numeric(opp_pts))
return(selected_team_df)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.