# https://nbasense.com/nba-api/Stats/Stats/Charts/InfographicFanDuelPlayer#request-example
clean_to_stem <- function(x) {
x <-
x %>%
str_replace('\\ ', '\\+') %>%
str_replace('\\/', '\\2F') %>%
str_replace("\\'", '%27')
x
}
get_nba_team_dict <-
function(teams = c("Washington Wizards", "Utah Jazz", "Toronto Raptors", "San Antonio Spurs",
"Sacramento Kings", "Portland Trail Blazers", "Phoenix Suns",
"Philadelphia 76ers", "Orlando Magic", "Oklahoma City Thunder",
"New York Knicks", "New Orleans Pelicans", "Minnesota Timberwolves",
"Milwaukee Bucks", "Miami Heat", "Memphis Grizzlies", "Los Angeles Lakers",
"Los Angeles Clippers", "Indiana Pacers", "Houston Rockets",
"Golden State Warriors", "Detroit Pistons", "Denver Nuggets",
"Dallas Mavericks", "Cleveland Cavaliers", "Chicago Bulls", "Charlotte Hornets",
"Brooklyn Nets", "Boston Celtics", "Atlanta Hawks")) {
if (!'df_nba_team_dict' %>% exists()) {
df_nba_team_dict <- nba_teams()
assign('df_nba_team_dict', df_nba_team_dict, envir = .GlobalEnv)
}
team_slugs <- teams %>% str_c(collapse = "|")
df_nba_team_dict %>%
filter(nameTeam %>% str_detect(team_slugs)) %>%
pull(idTeam)
}
parse_to_date_url <- function(game_date = "2017-12-31") {
parts <-
game_date %>% as.character() %>%
str_split("\\-") %>% flatten_chr()
str_c(parts[2], parts[3], parts[1], sep = "%2F")
}
generate_data_name <- function(x, result = "Team") {
x %>%
str_split("\\ ") %>%
flatten_chr() %>%
str_to_title() %>%
str_c(collapse = "") %>%
str_c("data", ., str_to_title(result))
}
#' Assign NBA teams to environment
#'
#' @return a `tibble`
#' @family dictionary
#' @family NBA teams
#' @export
#'
#' @examples
#' assign_nba_teams()
assign_nba_teams <-
function() {
if (!'df_dict_nba_teams' %>% exists()) {
df_dict_nba_teams <- nba_teams()
assign(x = 'df_dict_nba_teams', df_dict_nba_teams, envir = .GlobalEnv)
}
}
#' Assign NBA player dictionary to environment
#'
#'
#' @return a `tibble` to `df_dict_nba_players` in your environment
#' @export
#' @family dictionary
#' @family NBA players
#'
#' @examples
#' assign_nba_players()
assign_nba_players <-
function() {
if (!'df_dict_nba_players' %>% exists()) {
"Assigning NBA player dictionary to df_dict_nba_players to your environment" %>% cat(fill = T)
df_dict_nba_players <- nba_players()
assign(x = 'df_dict_nba_players', df_dict_nba_players, envir = .GlobalEnv)
}
}
generate_call_slug <-
function(x = NULL, default_value = "") {
if (x %>% purrr::is_null()) {
return(default_value)
}
if (x %>% is.na()) {
return(default_value)
}
if (x == T) {
return("Y")
}
if (x == F) {
return("N")
}
if (x %>% str_detect("\\-") %>% sum(na.rm = T) >= 1) {
x <-
x %>% parse_to_date_url()
return(x)
}
x %>% clean_to_stem()
}
assign_tables_modes <-
function(all_data, stat_type = "Player", add_mode_names = TRUE) {
tables <-
all_data$nameTable %>% unique()
dict_tables <- .dictionary_table_names()
tables %>%
walk(function(table){
table %>% cat(fill = T)
df_table_names <-
dict_tables %>%
filter(nameTable == table)
df_tables <-
all_data %>%
filter(nameTable == table) %>%
select(-nameTable)
modes <-
df_tables$modeSearch %>% unique()
modes %>%
walk(function(mode){
df_table <-
df_tables %>% filter(modeSearch == mode) %>%
tidyr::unnest()
slug_season <-
df_table_names$slugTable
period <-
df_table_names$periodTable
if (slug_season %>% length() > 0) {
df_table <-
df_table %>%
mutate(slugSeasonType = slug_season) %>%
select(slugSeasonType, everything())
}
has_measure <- df_table %>% tibble::has_name("typeMeasure")
if (has_measure) {
measures <-
df_table$typeMeasure %>% unique()
table_map <-
measures %>%
future_map(function(measure){
df <-
df_table %>% filter(typeMeasure == measure) %>%
dplyr::select(which(colMeans(is.na(.)) < 1))
if (measure == "Advanced") {
df <-
df %>% dplyr::rename(minutesTotal = minutes)
if (df %>% tibble::has_name("fgm")) {
df <-
df %>%
dplyr::rename(fgmTotal = fgm)
}
if (df %>% tibble::has_name("fga")) {
df <-
df %>%
dplyr::rename(fgaTotal = fga)
}
}
if (measure == "Opponent") {
df <- df %>% dplyr::rename(minutesOpp = minutes,
plusminusOpp = plusminus)
}
remove_rank <- names(df) %>% str_detect("Rank") %>% sum(na.rm = T) > 0 & (!df %>% tibble::has_name("isRank") & !table %>% str_detect("LeagueDash"))
if (remove_rank){
df <- df %>% select(-dplyr::matches("Rank"))
}
df <-
df %>% select(-one_of(c("modeSearch", "typeMeasure")))
if (add_mode_names) {
df_table_names <-
df %>% select_if(is.numeric) %>% names()
ignore <-
c("age", "gp", "gs", "id[A-Z]", "number[A-Z]", "pct[A-Z]", "ortg", "netrtg", "drtg", "ratio[A-Z]",
"countLastNGames", "wins", "losses", "minutesTotal",
mode) %>% str_c(collapse = "|")
names(df)[names(df) %in% df_table_names[!df_table_names %>% str_detect(ignore)]] <-
df_table_names[!df_table_names %>% str_detect(ignore)] %>%
str_c(., mode)
}
df %>%
dplyr::select(one_of(c("slugSeason", "slugTeam", "idTeam",
"isRookie", "numberPlayerSeason", "namePlayer", "idPlayer")), everything()) %>%
suppressWarnings()
})
data <-
table_map %>%
purrr::reduce(left_join) %>%
suppressWarnings() %>%
suppressMessages()
if (slug_season %>% length() == 0) {
slug_season <- ""
}
if (period %>% length() == 0) {
period <- ""
}
table_slug <- table %>% str_replace_all("Dashboard", "")
table_name <-
glue::glue("data{table_slug}{mode}") %>%
as.character()
assign(table_name, eval(data), envir = .GlobalEnv)
} else {
if (period %>% str_to_lower() %>% str_detect("career")) {
period <- "Career"
}
table_name <-
glue::glue("data{str_to_title(stat_type)}{table}")
if (add_mode_names) {
df_table <-
df_table %>%
select(-modeSearch)
df_table_names <-
df_table %>% select_if(is.numeric) %>% names()
ignore <-
c("age", "gp", "gs", "id[A-Z]", "number[A-Z]", "pct[A-Z]", "ortg", "netrtg", "drtg", "ratio[A-Z]",
"countLastNGames", "wins", "losses",
mode) %>% str_c(collapse = "|")
names(df_table)[names(df_table) %in% df_table_names[!df_table_names %>% str_detect(ignore)]] <-
df_table_names[!df_table_names %>% str_detect(ignore)] %>%
str_c(., mode)
}
df_table <-
df_table %>%
dplyr::select(one_of(c("slugSeason", "slugTeam", "idTeam",
"isRookie", "numberPlayerSeason", "namePlayer", "idPlayer")), everything()) %>%
suppressWarnings()
assign(table_name, eval(df_table), envir = .GlobalEnv)
}
})
})
}
.dictionary_table_names <-
function() {
tibble(nameTable = c("CareerTotalsAllStarSeason", "CareerTotalsCollegeSeason", "CareerTotalsPostSeason",
"CareerTotalsRegularSeason", "SeasonRankingsPostSeason", "SeasonRankingsRegularSeason",
"SeasonTotalsAllStarSeason", "SeasonTotalsCollegeSeason", "SeasonTotalsPostSeason",
"SeasonTotalsRegularSeason",
"OverallTeamDashboard", "LocationTeamDashboard", "WinsLossesTeamDashboard",
"MonthTeamDashboard", "PrePostAllStarTeamDashboard", "DaysRestTeamDashboard"
),
periodTable = c("Career", "Career", "Career",
"Career", "BySeason", "BySeason",
"BySeason", "BySeason", "BySeason",
"BySeason",
"", "", "",
"", "", ""
),
typeTable = c("AllStar", "College", "Playoffs",
"Season", "Playoffs", "Season",
"AllStar", "College", "PlayOffs",
"Season",
"Overall", "ByLocation", "ByWinLoss",
"ByMonth", "ByPrePostASG", "ByRest"
),
slugTable = c("ASG", "COL", "PO",
"RS", "PO", "RS",
"ASG", "COL", "PO",
"RS",
"Overall", "ByLocation", "ByWinLoss",
"ByMonth", "ByPrePostASG", "ByRest"
))
}
#' Players' NBA player ids
#'
#' Resolve player ids for specified players
#'
#' @param players vector of player names
#' @param player_ids vector of player ids
#'
#' @return a `tibble`
#' @export
#' @import dplyr stringr jsonlite readr purrr tibble tidyr curl
#' @family ids
#' @examples
#' nba_player_ids(players = c("Mitch Richmond", "Kyle Kuzma"))
nba_player_ids <-
function(players = NULL, player_ids = NULL) {
if (player_ids %>% purrr::is_null() && players %>% purrr::is_null()) {
stop("Please enter players of player ids")
}
ids <- c()
if (!player_ids %>% purrr::is_null()) {
ids <-
ids %>%
append(player_ids)
}
if (!'df_nba_player_dict' %>% exists()) {
df_nba_player_dict <-
nba_players()
assign(x = 'df_nba_player_dict', df_nba_player_dict, envir = .GlobalEnv)
}
if (!players %>% purrr::is_null() ) {
player_search <-
players %>% str_c(collapse = "|")
search_ids <-
df_nba_player_dict %>%
filter(namePlayer %>% str_detect(player_search)) %>%
pull(idPlayer) %>%
unique()
ids <-
ids %>%
append(search_ids)
}
ids %>% unique() %>% sort()
}
#' NBA team ids
#'
#' Resolve NBA team ID
#'
#' @param teams vector of team names
#' @param team_ids vector of team ids
#'
#' @return a `tibble`
#' @family ids
#' @export
#'
#' @examples
#' nba_teams_ids(teams = c("Brooklyn Nets", "Denver Nuggets"))
nba_teams_ids <-
function(teams = NULL,
team_ids = NULL,
all_active_teams = F) {
if (team_ids %>% purrr::is_null() && teams %>% purrr::is_null() & all_active_teams == F) {
stop("Please enter teams or team_ids ids")
}
ids <- c()
if (!team_ids %>% purrr::is_null()) {
ids <-
ids %>%
append(team_ids)
}
if (!'df_nba_team_dict' %>% exists()) {
df_nba_team_dict <- nba_teams()
assign('df_nba_team_dict', df_nba_team_dict, envir = .GlobalEnv)
}
if (all_active_teams) {
ids <- df_dict_nba_teams %>% filter(isNonNBATeam == 0) %>% pull(idTeam) %>% unique() %>% sort()
return(ids)
}
if (!teams %>% purrr::is_null() ) {
teams_search <-
teams %>% str_c(collapse = "|")
search_ids <-
df_nba_team_dict %>%
filter(!teamName %>% is.na()) %>%
filter(nameTeam %>% str_detect(teams_search)) %>%
pull(idTeam) %>%
unique()
ids <-
ids %>%
append(search_ids)
}
ids %>% unique() %>% sort()
}
gen_url <- function(endpoint) {
path <- paste('stats/', endpoint, sep = '')
url <- httr::modify_url("https://stats.nba.com/stats/", path = path)
url
}
clean_data_table_name <-
function(data) {
if (!data %>% hasName("typeResult")){
return(data)
}
type <- data %>% pull(typeResult) %>% unique()
if (type == "player") {
data <-
data %>%
dplyr::select(-typeResult)
return(data)
}
data <-
data %>%
dplyr::select(-typeResult)
num_names <-
data %>% select_if(is.numeric) %>% select(-dplyr::matches("id")) %>% names()
num_new <-
glue::glue("{num_names}Team") %>% as.character()
names(data)[names(data) %in% num_names] <-
num_new
data
}
get_missing_names <-
function(json_names) {
df_names <- dictionary_nba_names()
json_names[!json_names %in% df_names$nameNBA] %>% emacs()
}
generate_season_slug <-
function(season = 2018) {
season_start <- season - 1
season_end_slug <- season %>% substr(3,4)
glue::glue("{season_start}-{season_end_slug}") %>%
as.character()
}
pad_id <-
function(id = 21601112) {
zeros <-
10 - nchar(id)
if (zeros == 0) {
return(id)
}
start <-
rep("0", times = zeros) %>% str_c(collapse = "")
glue::glue("{start}{id}") %>% as.character()
}
#' Dictionary of NBA Headers and nbastatR names
#'
#' @return a \code{tibble}
#' @export
#' @import dplyr
#' @family Dictionary
#' @family nbastatR tool
#' @examples
#' dictionary_nba_names()
dictionary_nba_names <-
function() {
tibble(nameNBA =
c("PERSON_ID", "DISPLAY_LAST_COMMA_FIRST", "DISPLAY_FIRST_LAST",
"ROSTERSTATUS", "FROM_YEAR", "TO_YEAR", "PLAYERCODE", "TEAM_ID",
"TEAM_CITY", "TEAM_NAME", "TEAM_ABBREVIATION", "TEAM_CODE", "GAMES_PLAYED_FLAG",
"SEASON_ID", "PLAYER_ID", "PLAYER_NAME", "GAME_ID", "GAME_DATE",
"MATCHUP", "WL", "MIN", "FGM", "FGA", "FG_PCT", "FG3M", "FG3A",
"FG3_PCT", "FTM", "FTA", "FT_PCT", "OREB", "DREB", "REB", "AST",
"STL", "BLK", "TOV", "PF", "PTS", "PLUS_MINUS", "VIDEO_AVAILABLE",
"START_POSITION", "COMMENT", "USG_PCT", "PCT_FGM", "PCT_FGA",
"PCT_FG3M", "PCT_FG3A", "PCT_FTM", "PCT_FTA", "PCT_OREB", "PCT_DREB",
"PCT_REB", "PCT_AST", "PCT_TOV", "PCT_STL", "PCT_BLK", "PCT_BLKA",
"PCT_PF", "PCT_PFD", "PCT_PTS", "USG_PCT", "PCT_FGM", "PCT_FGA",
"PCT_FG3M", "PCT_FG3A", "PCT_FTM", "PCT_FTA", "PCT_OREB", "PCT_DREB",
"PCT_REB", "PCT_AST", "PCT_TOV", "PCT_STL", "PCT_BLK", "PCT_BLKA",
"PCT_PF", "PCT_PFD", "PCT_PTS","EVENTNUM", "EVENTMSGTYPE", "EVENTMSGACTIONTYPE", "PERIOD",
"WCTIMESTRING", "PCTIMESTRING", "HOMEDESCRIPTION", "NEUTRALDESCRIPTION",
"VISITORDESCRIPTION", "SCORE", "SCOREMARGIN", "PERSON1TYPE",
"PLAYER1_ID", "PLAYER1_NAME", "PLAYER1_TEAM_ID", "PLAYER1_TEAM_CITY",
"PLAYER1_TEAM_NICKNAME", "PLAYER1_TEAM_ABBREVIATION", "PERSON2TYPE",
"PLAYER2_ID", "PLAYER2_NAME", "PLAYER2_TEAM_ID", "PLAYER2_TEAM_CITY",
"PLAYER2_TEAM_NICKNAME", "PLAYER2_TEAM_ABBREVIATION", "PERSON3TYPE",
"PLAYER3_ID", "PLAYER3_NAME", "PLAYER3_TEAM_ID", "PLAYER3_TEAM_CITY",
"PLAYER3_TEAM_NICKNAME", "PLAYER3_TEAM_ABBREVIATION", "VIDEO_AVAILABLE_FLAG",
"HOME_TEAM_ID", "HOME_TEAM_ABR", "HOME_TEAM_PTS", "VISITOR_TEAM_ID",
"VISITOR_TEAM_ABR", "VISITOR_TEAM_PTS",
"JERSEY_NUM", "PLAYER_POSITION", "LOCATION", "FAN_DUEL_PTS",
"NBA_FANTASY_PTS", "BLKA", "PFD",
"GAME_DATE_EST", "GAME_SEQUENCE", "GAME_STATUS_ID", "GAME_STATUS_TEXT",
"GAMECODE", "SEASON", "LIVE_PERIOD", "LIVE_PC_TIME", "NATL_TV_BROADCASTER_ABBREVIATION",
"LIVE_PERIOD_TIME_BCAST", "WH_STATUS",
"LEAGUE_ID", "PTS_PAINT", "PTS_2ND_CHANCE", "PTS_FB", "LARGEST_LEAD",
"LEAD_CHANGES", "TIMES_TIED", "TEAM_TURNOVERS", "TOTAL_TURNOVERS",
"TEAM_REBOUNDS", "PTS_OFF_TO", "OFFICIAL_ID", "FIRST_NAME", "LAST_NAME",
"ATTENDANCE", "GAME_TIME",
"TEAM_CITY_NAME", "TEAM_NICKNAME", "TEAM_WINS_LOSSES", "PTS_QTR1",
"PTS_QTR2", "PTS_QTR3", "PTS_QTR4", "PTS_OT1", "PTS_OT2", "PTS_OT3",
"PTS_OT4", "PTS_OT5", "PTS_OT6", "PTS_OT7", "PTS_OT8", "PTS_OT9",
"PTS_OT10",
"LAST_GAME_ID", "LAST_GAME_DATE_EST", "LAST_GAME_HOME_TEAM_ID",
"LAST_GAME_HOME_TEAM_CITY", "LAST_GAME_HOME_TEAM_NAME", "LAST_GAME_HOME_TEAM_ABBREVIATION",
"LAST_GAME_HOME_TEAM_POINTS", "LAST_GAME_VISITOR_TEAM_ID", "LAST_GAME_VISITOR_TEAM_CITY",
"LAST_GAME_VISITOR_TEAM_NAME", "LAST_GAME_VISITOR_TEAM_CITY1",
"LAST_GAME_VISITOR_TEAM_POINTS",
"HOME_TEAM_WINS", "HOME_TEAM_LOSSES", "SERIES_LEADER",
"PT_AVAILABLE", "PT_XYZ_AVAILABLE", "HUSTLE_STATUS", "HISTORICAL_STATUS",
"TO", "SPD", "DIST", "ORBC", "DRBC", "RBC", "TCHS", "SAST", "FTAST",
"PASS", "CFGM", "CFGA", "CFG_PCT", "UFGM", "UFGA", "UFG_PCT",
"DFGM", "DFGA", "DFG_PCT",
"PCT_FGA_2PT", "PCT_FGA_3PT", "PCT_PTS_2PT", "PCT_PTS_2PT_MR",
"PCT_PTS_3PT", "PCT_PTS_FB", "PCT_PTS_FT", "PCT_PTS_OFF_TOV",
"PCT_PTS_PAINT", "PCT_AST_2PM", "PCT_UAST_2PM", "PCT_AST_3PM",
"PCT_UAST_3PM", "PCT_AST_FGM", "PCT_UAST_FGM",
"PTS_OFF_TOV", "OPP_PTS_OFF_TOV", "OPP_PTS_2ND_CHANCE", "OPP_PTS_FB",
"OPP_PTS_PAINT",
"MINUTES", "CONTESTED_SHOTS", "CONTESTED_SHOTS_2PT", "CONTESTED_SHOTS_3PT",
"DEFLECTIONS", "LOOSE_BALLS_RECOVERED", "CHARGES_DRAWN", "SCREEN_ASSISTS",
"EFG_PCT", "FTA_RATE", "TM_TOV_PCT", "OREB_PCT", "OPP_EFG_PCT",
"OPP_FTA_RATE", "OPP_TOV_PCT", "OPP_OREB_PCT",
"OFF_RATING", "DEF_RATING", "NET_RATING", "AST_PCT", "AST_TOV",
"AST_RATIO", "DREB_PCT", "REB_PCT", "TS_PCT", "PACE", "PIE",
"GRID_TYPE", "GAME_EVENT_ID", "MINUTES_REMAINING", "SECONDS_REMAINING",
"EVENT_TYPE", "ACTION_TYPE", "SHOT_TYPE", "SHOT_ZONE_BASIC",
"SHOT_ZONE_AREA", "SHOT_ZONE_RANGE", "SHOT_DISTANCE", "LOC_X",
"LOC_Y", "SHOT_ATTEMPTED_FLAG", "SHOT_MADE_FLAG", "HTM", "VTM",
"TeamID", "LeagueID", "PLAYER", "NUM", "POSITION", "HEIGHT",
"WEIGHT", "BIRTH_DATE", "AGE", "EXP", "SCHOOL",
"MIN_YEAR", "MAX_YEAR", "ABBREVIATION", "PLAYER_AGE", "GP", "GS",
"Team_ID", "ORGANIZATION_ID", "SCHOOL_NAME",
"RANK_MIN", "RANK_FGM", "RANK_FGA", "RANK_FG_PCT", "RANK_FG3M",
"RANK_FG3A", "RANK_FG3_PCT", "RANK_FTM", "RANK_FTA", "RANK_FT_PCT",
"RANK_OREB", "RANK_DREB", "RANK_REB", "RANK_AST", "RANK_STL",
"RANK_BLK", "RANK_TOV", "RANK_PTS", "RANK_EFF",
"RANK_PG_MIN", "RANK_PG_FGM", "RANK_PG_FGA", "RANK_PG_FG3M",
"RANK_PG_FG3A", "RANK_PG_FTM", "RANK_PG_FTA", "RANK_PG_OREB",
"RANK_PG_DREB", "RANK_PG_REB", "RANK_PG_AST", "RANK_PG_STL",
"RANK_PG_BLK", "RANK_PG_TOV", "RANK_PG_PTS", "RANK_PG_EFF",
"RANK_PMIN_MIN", "RANK_PMIN_FGM", "RANK_PMIN_FG3M", "RANK_PMIN_FG3A",
"RANK_PMIN_FTM", "RANK_PMIN_FTA", "RANK_PMIN_OREB", "RANK_PMIN_DREB",
"RANK_PMIN_REB", "RANK_PMIN_AST", "RANK_PMIN_STL", "RANK_PMIN_BLK",
"RANK_PMIN_TOV", "RANK_PMIN_PTS", "RANK_PMIN_EFF",
"PLAYER_NAME", "SEASON", "ROUND_NUMBER", "ROUND_PICK", "OVERALL_PICK",
"ORGANIZATION", "ORGANIZATION_TYPE", "GROUP_SET", "GROUP_VALUE", "SEASON_YEAR", "W", "L", "W_PCT",
"GP_RANK", "W_RANK", "L_RANK", "W_PCT_RANK", "MIN_RANK", "FGM_RANK",
"FGA_RANK", "FG_PCT_RANK", "FG3M_RANK", "FG3A_RANK", "FG3_PCT_RANK",
"FTM_RANK", "FTA_RANK", "FT_PCT_RANK", "OREB_RANK", "DREB_RANK",
"REB_RANK", "AST_RANK", "TOV_RANK", "STL_RANK", "BLK_RANK", "BLKA_RANK",
"PF_RANK", "PFD_RANK", "PTS_RANK", "PLUS_MINUS_RANK", "CFID",
"CFPARAMS", "MeasureType", "PerMode", "PlusMinus", "PaceAdjust", "Rank",
"LeagueID", "Season", "SeasonType", "PORound", "TeamID", "Month",
"OpponentTeamID", "Period", "LastNGames", "TEAM_GAME_LOCATION", "GAME_RESULT", "SEASON_MONTH_NAME", "SEASON_SEGMENT", "TEAM_DAYS_REST_RANGE", "PlayerID",
"Outcome", "Location", "SeasonSegment", "DateFrom", "DateTo",
"VsConference", "VsDivision", "GameSegment", "ShotClockRange",
"AST_TO", "OFF_RATING_RANK", "DEF_RATING_RANK", "NET_RATING_RANK",
"AST_PCT_RANK", "AST_TO_RANK", "AST_RATIO_RANK", "OREB_PCT_RANK",
"DREB_PCT_RANK", "REB_PCT_RANK", "TM_TOV_PCT_RANK", "EFG_PCT_RANK",
"TS_PCT_RANK", "PACE_RANK", "PIE_RANK",
"PTS_OFF_TOV_RANK", "PTS_2ND_CHANCE_RANK", "PTS_FB_RANK", "PTS_PAINT_RANK",
"OPP_PTS_OFF_TOV_RANK", "OPP_PTS_2ND_CHANCE_RANK", "OPP_PTS_FB_RANK",
"OPP_PTS_PAINT_RANK", "PCT_FGA_2PT_RANK", "PCT_FGA_3PT_RANK", "PCT_PTS_2PT_RANK",
"PCT_PTS_2PT_MR_RANK", "PCT_PTS_3PT_RANK", "PCT_PTS_FB_RANK",
"PCT_PTS_FT_RANK", "PCT_PTS_OFF_TOV_RANK", "PCT_PTS_PAINT_RANK",
"PCT_AST_2PM_RANK", "PCT_UAST_2PM_RANK", "PCT_AST_3PM_RANK",
"PCT_UAST_3PM_RANK", "PCT_AST_FGM_RANK", "PCT_UAST_FGM_RANK",
"FTA_RATE_RANK", "OPP_EFG_PCT_RANK", "OPP_FTA_RATE_RANK", "OPP_TOV_PCT_RANK",
"OPP_OREB_PCT_RANK",
"OPP_FGM", "OPP_FGA", "OPP_FG_PCT", "OPP_FG3M", "OPP_FG3A",
"OPP_FG3_PCT", "OPP_FTM", "OPP_FTA", "OPP_FT_PCT", "OPP_OREB",
"OPP_DREB", "OPP_REB", "OPP_AST", "OPP_TOV", "OPP_STL", "OPP_BLK",
"OPP_BLKA", "OPP_PF", "OPP_PFD", "OPP_PTS", "OPP_FGM_RANK", "OPP_FGA_RANK",
"OPP_FG_PCT_RANK", "OPP_FG3M_RANK", "OPP_FG3A_RANK", "OPP_FG3_PCT_RANK",
"OPP_FTM_RANK", "OPP_FTA_RANK", "OPP_FT_PCT_RANK", "OPP_OREB_RANK",
"OPP_DREB_RANK", "OPP_REB_RANK", "OPP_AST_RANK", "OPP_TOV_RANK",
"OPP_STL_RANK", "OPP_BLK_RANK", "OPP_BLKA_RANK", "OPP_PF_RANK",
"OPP_PFD_RANK", "OPP_PTS_RANK",
'FGM_PG', 'FGA_PG', 'FGA_PG_RANK', 'FGM_PG_RANK', 'USG_PCT_RANK',
"DD2", "TD3", "NBA_FANTASY_PTS_RANK", "DD2_RANK", "TD3_RANK",
"PCT_FGM_RANK", "PCT_FGA_RANK", "PCT_FG3M_RANK", "PCT_FG3A_RANK",
"PCT_FTM_RANK", "PCT_FTA_RANK", "PCT_OREB_RANK", "PCT_DREB_RANK",
"PCT_REB_RANK", "PCT_AST_RANK", "PCT_TOV_RANK", "PCT_STL_RANK",
"PCT_BLK_RANK", "PCT_BLKA_RANK", "PCT_PF_RANK", "PCT_PFD_RANK",
"PCT_PTS_RANK", "DISPLAY_FI_LAST", "BIRTHDATE", "COUNTRY", "LAST_AFFILIATION",
"SEASON_EXP", "JERSEY", "DLEAGUE_FLAG", "DRAFT_YEAR", "DRAFT_ROUND",
"DRAFT_NUMBER", "TimeFrame", "ALL_STAR_APPEARANCES",
"EFF", "TPP", "ORPG", "DRPG", "TRPG", "APG", "TPG",
"SPG", "BPG", "PFPG", "PPG", "OPPG", "FGP", "FTP",
"HEIGHT_WO_SHOES", "HEIGHT_WO_SHOES_FT_IN", "HEIGHT_W_SHOES",
"HEIGHT_W_SHOES_FT_IN", "WINGSPAN", "WINGSPAN_FT_IN", "STANDING_REACH",
"STANDING_REACH_FT_IN", "BODY_FAT_PCT", "HAND_LENGTH", "HAND_WIDTH",
"STANDING_VERTICAL_LEAP", "MAX_VERTICAL_LEAP", "LANE_AGILITY_TIME",
"MODIFIED_LANE_AGILITY_TIME", "THREE_QUARTER_SPRINT", "BENCH_PRESS",
"SPOT_FIFTEEN_CORNER_LEFT", "SPOT_FIFTEEN_BREAK_LEFT", "SPOT_FIFTEEN_TOP_KEY",
"SPOT_FIFTEEN_BREAK_RIGHT", "SPOT_FIFTEEN_CORNER_RIGHT", "SPOT_COLLEGE_CORNER_LEFT",
"SPOT_COLLEGE_BREAK_LEFT", "SPOT_COLLEGE_TOP_KEY", "SPOT_COLLEGE_BREAK_RIGHT",
"SPOT_COLLEGE_CORNER_RIGHT", "SPOT_NBA_CORNER_LEFT", "SPOT_NBA_BREAK_LEFT",
"SPOT_NBA_TOP_KEY", "SPOT_NBA_BREAK_RIGHT", "SPOT_NBA_CORNER_RIGHT",
"OFF_DRIB_FIFTEEN_BREAK_LEFT", "OFF_DRIB_FIFTEEN_TOP_KEY", "OFF_DRIB_FIFTEEN_BREAK_RIGHT",
"OFF_DRIB_COLLEGE_BREAK_LEFT", "OFF_DRIB_COLLEGE_TOP_KEY", "OFF_DRIB_COLLEGE_BREAK_RIGHT",
"ON_MOVE_FIFTEEN", "ON_MOVE_COLLEGE", "ContextFilter", "ContextMeasure",
"TEAM", "RANK", "Scope", "StatCategory", "STL_TOV",
"SEASON_TYPE", "ACTIVE_WITH_TEAM", "F_RANK_GP", "F_RANK_MINUTES",
"F_RANK_FGM", "F_RANK_FGA", "F_RANK_FG_PCT", "F_RANK_FG3M", "F_RANK_FG3A",
"F_RANK_FG3_PCT", "F_RANK_FTM", "F_RANK_FTA", "F_RANK_FT_PCT",
"F_RANK_OREB", "F_RANK_DREB", "F_RANK_REB", "F_RANK_AST", "F_RANK_PF",
"F_RANK_STL", "F_RANK_TOV", "F_RANK_BLK", "F_RANK_PTS",
"EVENT_NUM", "HOME_PCT", "VISITOR_PCT", "HOME_PTS", "VISITOR_PTS",
"HOME_SCORE_MARGIN", "HOME_POSS_IND", "HOME_G", "DESCRIPTION",
"ISVISIBLE",
"Transaction_Type", "TRANSACTION_DATE", "TRANSACTION_DESCRIPTION",
"Additional_Sort", "GroupSort",
"ListItemCaption", "ListItemDescription", "ListItemPubDate",
"lastUpdate", "UpdateId", "RotoId", "FirstName", "LastName",
"Position", "Team", "TeamCode", "Date", "Priority", "Headline",
"Injured", "Injured_Status", "Injury_Location", "Injury_Type",
"Injury_Detail", "Injury_Side",
"YEAR", "WINS", "LOSSES", "WIN_PCT", "CONF_RANK", "DIV_RANK",
"PO_WINS", "PO_LOSSES", "CONF_COUNT", "DIV_COUNT", "NBA_FINALS_APPEARANCE",
"PlayerIDSID", "PlayerFirstName", "PlayerLastName", "PlayerNumber",
"P", "TeamIDSID", "TeamName", "TeamNameAbbreviation", "TeamShortName",
"Poss", "Time", "Points", "PPP", "WorsePPP", "BetterPPP", "PossG",
"FGAG", "FGMG", "FGmG", "FGm", "FG", "aFG", "FT", "SF", "PlusOne",
"Score", "name", "season", "seasonType",
"SeasonID", "TeamCity", "Conference", "ConferenceRecord", "PlayoffRank",
"ClinchIndicator", "Division", "DivisionRecord", "DivisionRank",
"WinPCT", "LeagueRank", "Record", "HOME", "ROAD", "L10", "Last10Home",
"Last10Road", "OT", "ThreePTSOrLess", "TenPTSOrMore", "LongHomeStreak",
"strLongHomeStreak", "LongRoadStreak", "strLongRoadStreak", "LongWinStreak",
"LongLossStreak", "CurrentHomeStreak", "strCurrentHomeStreak",
"CurrentRoadStreak", "strCurrentRoadStreak", "CurrentStreak",
"strCurrentStreak", "ConferenceGamesBack", "DivisionGamesBack",
"ClinchedConferenceTitle", "ClinchedDivisionTitle", "ClinchedPlayoffBirth",
"EliminatedConference", "EliminatedDivision", "AheadAtHalf",
"BehindAtHalf", "TiedAtHalf", "AheadAtThird", "BehindAtThird",
"TiedAtThird", "Score100PTS", "OppScore100PTS", "OppOver500",
"LeadInFGPCT", "LeadInReb", "FewerTurnovers", "PointsPG", "OppPointsPG",
"DiffPointsPG", "vsEast", "vsAtlantic", "vsCentral", "vsWest",
"vsPacific", "vsMidwest", "Jan", "Feb", "Mar", "Apr", "May",
"Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
"vsNorthwest", "vsSoutheast", "vsSouthwest",
"CONFERENCE", "HIGH_SEED_RANK", "HIGH_SEED_TEAM", "HIGH_SEED_TEAM_ID",
"LOW_SEED_RANK", "LOW_SEED_TEAM", "LOW_SEED_TEAM_ID", "HIGH_SEED_SERIES_W",
"HIGH_SEED_SERIES_L", "HIGH_SEED_SERIES_REMAINING_G", "HIGH_SEED_SERIES_REMAINING_HOME_G",
"HIGH_SEED_SERIES_REMAINING_AWAY_G",
"REMAINING_G", "REMAINING_HOME_G", "REMAINING_AWAY_G",
"PCT", "DIV", "CONF", "AWAY", "GB", "GR_OVER_500", "GR_OVER_500_HOME",
"GR_OVER_500_AWAY", "GR_UNDER_500", "GR_UNDER_500_HOME", "GR_UNDER_500_AWAY",
"RANKING_CRITERIA", "CLINCHED_PLAYOFFS", "CLINCHED_CONFERENCE",
"CLINCHED_DIVISION", "ELIMINATED_PLAYOFFS", "SOSA_REMAINING",
"NICKNAME", "YEARFOUNDED", "CITY", "ARENA", "ARENACAPACITY",
"OWNER", "GENERALMANAGER", "HEADCOACH", "DLEAGUEAFFILIATION",
"YEARACTIVETILL", "ACCOUNTTYPE", "WEBSITE_LINK", "YEARAWARDED",
"OPPOSITETEAM", "PLAYERID", "SEASONSWITHTEAM",
"HOME_TV_BROADCASTER_ABBREVIATION", "AWAY_TV_BROADCASTER_ABBREVIATION",
"ARENA_NAME",
"STANDINGSDATE", "G", "HOME_RECORD", "ROAD_RECORD",
"PTS_PLAYER_ID", "PTS_PLAYER_NAME", "REB_PLAYER_ID", "REB_PLAYER_NAME",
"AST_PLAYER_ID", "AST_PLAYER_NAME",
"teamId", "win", "loss", "winPct", "winPctV2", "lossPct", "lossPctV2",
"gamesBehind", "divGamesBehind", "clinchedPlayoffsCode", "clinchedPlayoffsCodeV2",
"confRank", "confWin", "confLoss", "divWin", "divLoss", "homeWin",
"homeLoss", "awayWin", "awayLoss", "lastTenWin", "lastTenLoss",
"streak", "divRank", "isWinStreak", "tieBreakerPts",
"PASS_TYPE", "PASS_FROM", "PASS_TEAMMATE_PLAYER_ID", "FREQUENCY",
"FG2M", "FG2A", "FG2_PCT", "PASS_TO",
"GROUP_VALUE_ORDER", "GROUP_VALUE_2",
"VS_PLAYER_ID", "VS_PLAYER_NAME", "COURT_STATUS",
"OVERALL", "REB_FREQUENCY", "C_OREB", "C_DREB", "C_REB", "C_REB_PCT",
"UC_OREB", "UC_DREB", "UC_REB", "UC_REB_PCT",
"SORT_ORDER", "SHOT_TYPE_RANGE",
"REB_NUM_CONTESTING_RANGE",
"FGA_FREQUENCY", "FG2A_FREQUENCY", "FG3A_FREQUENCY",
"SHOT_CLOCK_RANGE", "DRIBBLE_RANGE",
"CLOSE_DEF_DIST_RANGE", "TOUCH_TIME_RANGE",
"GameID", "GROUP_ID", "GROUP_NAME",
"SHOT_DIST_RANGE", "REB_DIST_RANGE",
"TEAM_CONFERENCE", "TEAM_DIVISION",
"PTS_PG", "REB_PG", "AST_PG", "OPP_PTS_PG",
"MAX_GAME_DATE", "OppTeamID",
"SeasonYear", "NumberOfGames",
"HOME_TEAM_NAME", "VISITOR_TEAM_NAME", "HOME_TEAM_ABBREVIATION",
"VISITOR_TEAM_ABBREVIATION", "HOME_TEAM_NICKNAME", "VISITOR_TEAM_NICKNAME",
"HOME_WL", "VISITOR_WL",
"PLAYER_NAME_LAST_FIRST",
"CLOSE_DEF_PERSON_ID", "DEFENSE_CATEGORY", "FREQ", "D_FGM",
"D_FGA", "D_FG_PCT", "NORMAL_FG_PCT", "PCT_PLUSMINUS",
"DraftPick", "DefenseCategory", "PLAYER_LAST_TEAM_ID", "PLAYER_LAST_TEAM_ABBREVIATION",
"ClutchTime", "PointDiff", "AheadBehind", "DistanceRange",
"DribbleRange", "GeneralRange", "BOX_OUTS",
"POSS",
"PLAYER_PTS",
"TEAM_PTS",
"SFL",
"DEF_FLS",
"CFG3M",
"CFG3A",
"CFG3_PCT",
"OFF_TEAM_ID", "OFF_TEAM_ABBREVIATION", "OFF_TEAM_CITY", "OFF_TEAM_NICKNAME",
"OFF_PLAYER_ID", "OFF_PLAYER_NAME", "DEF_TEAM_ID", "DEF_TEAM_ABBREVIATION",
"DEF_TEAM_CITY", "DEF_TEAM_NICKNAME", "DEF_PLAYER_ID", "DEF_PLAYER_NAME",
"OFF_MATCHUP_PCT", "HELP_BLK", "HELP_BLK_REC", "DEF_FOULS", "OFF_FOULS",
"isNBAFranchise", "isAllStar", "city", "altCityName",
"fullName", "tricode", "urlName", "confName", "divName",
"nickname",
"firstName",
"lastName",
"personId",
"jersey",
"isActive",
"pos",
"heightFeet",
"heightInches",
"heightMeters",
"weightPounds",
"weightKilograms",
"dateOfBirthUTC",
"teams",
"draft",
"nbaDebutYear",
"yearsPro",
"collegeName",
"lastAffiliation",
"country",
"idPlayer",
"teamId",
"seasonStart",
"seasonEnd",
"PLAYER_JERSEY_NUM",
"GAMES_PLAYED",
"DBL_DBL",
"TPL_DBL",
"BOX_TYPE",
"DATASET_TYPE",
"BOX_ORDER",
"PLAYERGAMESTATUS",
"SECONDS",
"ORTG",
"DRTG",
"NET_RTG",
"TO_RATIO",
"USAGE_PCT",
"SHORT_NAME",
"POSS_MINUTES",
"POSS_SECONDS",
"AVG_POSS_SEC",
"OFF_PACE",
"DEF_PACE",
"TMPTS",
"OPPPTS",
"PLUSMINUS",
"TOV_PCT",
"fn",
"ln",
"num",
"ta",
"tn",
"tid",
"tc",
"min",
"sec",
"totsec",
"fga",
"fgm",
"tpa",
"tpm",
"fta",
"ftm",
"oreb",
"dreb",
"reb",
"ast",
"stl",
"blk",
"pf",
"pts",
"tov",
"fbpts",
"fbptsa",
"fbptsm",
"pip",
"pipa",
"pipm",
"court",
"pid",
"pm",
"blka",
"tf",
"status",
"memo",
"mid",
"gid",
"gdte",
"htm",
"vtm",
"etm",
"gdtutc",
"utctm",
"ac",
"as",
"gcode",
"next",
"ar",
"p",
"st",
"stt",
"cl",
"an",
"at",
"dur",
"E_OFF_RATING",
"E_DEF_RATING",
"E_NET_RATING",
"E_USG_PCT",
"E_PACE",
"NBA_FLAG",
"E_TM_TOV_PCT",
"OFF_BOXOUTS",
"DEF_BOXOUTS",
"OFF_LOOSE_BALLS_RECOVERED",
"DEF_LOOSE_BALLS_RECOVERED",
"BOX_OUT_PLAYER_TEAM_REBS",
"BOX_OUT_PLAYER",
"SCREEN_AST_PTS",
"BOX_OUT_PLAYER_REBS",
"OTHERLEAGUE_EXPERIENCE_CH",
"sp_work_OFF_RATING", "sp_work_DEF_RATING", "sp_work_NET_RATING",
"E_TOV_PCT", "PACE_PER40", "sp_work_PACE", "E_OFF_RATING_RANK",
"sp_work_OFF_RATING_RANK", "E_DEF_RATING_RANK", "sp_work_DEF_RATING_RANK",
"E_NET_RATING_RANK", "sp_work_NET_RATING_RANK", "E_TOV_PCT_RANK",
"E_USG_PCT_RANK", "E_PACE_RANK", "sp_work_PACE_RANK"
),
nameActual =
c("idPlayer", "namePlayerLastFirst", "namePlayer",
"isActive", "yearSeasonFirst", "yearSeasonLast", "slugPlayer", "idTeam",
"cityTeam", "teamName", "slugTeam", "codeTeam", "hasGamesPlayedFlag",
"slugSeason", "idPlayer", "namePlayer", "idGame", "dateGame",
"slugMatchup", "outcomeGame", "minutes", "fgm", "fga", "pctFG", "fg3m", "fg3a",
"pctFG3", "ftm", "fta", "pctFT", "oreb", "dreb", "treb", "ast",
"stl", "blk", "tov", "pf", "pts", "plusminus", "hasVideo",
"groupStartPosition", "descriptionComment", "pctUSG", "pctFGMOfTeam", "pctFGAOfTeam",
"pctFG3MOfTeam","pctFG3AOfTeam", "pctFTMOfTeam", "pctFTAOfTeam", "pctOREBOfTeam",
"pctDREBOfTeam", "pctREBOfTeam", "pctASTOfTeam", "pctTOVOfTeam",
"pctSTLOfTeam", "pctBLKOfTeam", "pctBLKAOfTeam", "pctPFOfTeam",
"pctPFDOfTeam", "pctPTSOfTeam", "pctUSG", "pctFGMOfTeam", "pctFGAOfTeam",
"pctFG3MOfTeam", "pctFG3AOfTeam", "pctFTMOfTeam", "pctFTAOfTeam",
"pctOREBOfTeam", "pctDREBOfTeam", "pctTREBOfTeam", "pctASTOfTeam",
"pctTOVOfTeam", "pctSTLOfTeam", "pctBLKOfTeam", "pctBLKAOfTeam",
"pctPFOfTeam", "pctPFDOfTeam", "pctPTSOfTeam",
"numberEvent", "numberEventMessageType", "numberEventActionType", "numberPeriod",
"timeStringWC", "timeQuarter", "descriptionPlayHome", "descriptionPlayNeutral",
"descriptionPlayVisitor", "slugScore", "marginScore", "idPersonType1",
"idPlayerNBA1", "namePlayer1", "idTeamPlayer1", "cityTeamPlayer1",
"teamNamePlayer1", "slugTeamPlayer1", "idPersonType2",
"idPlayerNBA2", "namePlayer2", "idTeamPlayer2", "cityTeamPlayer2",
"teamNamePlayer2", "slugTeamPlayer2", "idPersonType3",
"idPlayerNBA3", "namePlayer3", "idTeamPlayer3", "cityTeamPlayer3",
"teamNamePlayer3", "slugTeamPlayer3", "hasVideo",
"idTeamHome", "slugTeamHome", "ptsTotalTeamHome", "idTeamAway",
"slugTeamAway", "ptsTotalTeamAway",
"numberJersey", "groupPosition", "locationGame", "fptsFDActual",
"fptsNBAActual", "blka", "pfd",
"dateGame", "numberGameDate", "idGameStatus", "descriptionGameStatus",
"slugGame", "yearSeasonStart", "numberPeriodTime", "timeGameLive", "slugTVBroadcaster",
"slugQuarterLive", "hasStatusWH",
"idLeague", "ptsPaint", "ptsSecondChance", "ptsFastBreak", "leadLargest",
"countLeadChanges", "countTies", "tovTeam", "tobTotal",
"trbTeam", "ptsOffTOV", "idOffical", "nameFirst", "nameLast",
"countAttendance", "timeGame",
"cityTeam", "teamName", "recordOverall", "ptsQ1",
"ptsQ2", "ptsQ3", "ptsQ4", "ptsOT1", "ptsOT2", "ptsOT3",
"ptsOT4", "ptsOT5", "ptsOT6", "ptsOT7", "ptsOT8", "ptsOT9",
"ptsOT10",
"idGameLast", "dateGameLast", "idTeamHomeLast",
"cityTeamHomeLast", "nameTeamHomeLast", "slugTeamHomeLast",
"ptsTeamHomeLast", "idTeamAwayLast", "cityTeamAwayLast",
"nameTeamAwayLast", "slugTeamAwayLast",
"ptsTeamAwayLast",
"countWinsSeriesSeasonHome", "countLossesSeriesSeasonHome", "descriptionSeriesLeader",
"hasPT", "hasPTXYZ", "hasHustleStats", "hasHistoricalStatus", "tov",
"mphMean", "distMiles", "orebChances", "drebChances", "trebChances", "touches", "astSecondary", "ftAST",
"passes", "fgmContested", "fgaContested", "pctFGContested", "fgmUncontested", "fgaUncontested", "pctFGUncontested",
"fgmRimDefended", "fgaRimDefended", "pctFGRimDefended",
"pctFGAasFG2", "pctFGAasFG3", "pctPTSasFG2", "pctPTSasFG2asMR",
"pctsPTSasFG3", "pctPTSasFB", "pctPTSasFT", "pctPTSasOffTOV",
"pctPTSasPaint", "pctFG2MasAssisted", "pctFG2MasUnassisted", "pctFG3MasAssisted",
"pctFG3MasUnassisted", "pctFGMasAssisted", "pctFGMasUnassisted",
"ptsOffTOV", "ptsOffTOVOpponent", "ptsSecondChanceOpponent", "ptsFastBreakOpponent",
"ptsPaintOpponent",
"minutes", "fgContested", "fg2Contested", "fg3Contested",
"deflections", "looseBallsRecovered", "chargesDrawn", "screenAssist",
"pctEFG", "rateFTA", "pctTOVTeam", "pctOREB", "pctEFGOpponent",
"rateFTAOpponent", "pctTOVOpponent", "pctOREBOpponent",
"ortg", "drtg", "netrtg", "pctAST", "ratioASTtoTOV",
"ratioAST", "pctDREB", "pctTREB", "pctTS", "pace", "ratioPIE",
"typeGrid", "idEvent", "minutesRemaining", "secondsRemaining",
"typeEvent", "typeAction", "typeShot", "zoneBasic",
"zoneArea", "zoneRange", "distanceShot", "locationX",
"locationY", "isShotAttempted", "isShotMade", "slugTeamHome", "slugTeamAway",
"idTeam", "idLeague", "namePlayer", "numberJersey", "groupPosition", "heightInches",
"weightLBS", "dateBirth", "agePlayer", "countYearsExperience", "nameSchool",
"yearSeasonFirst", "yearSeasonLast", "slugTeam", "agePlayer", "gp", "gs",
"idTeam", "idOrganization", "nameSchool",
"minutesRank", "fgmRank", "fgaRank", "pctFGRank", "fg3mRank",
"fg3aRank", "pctFG3Rank", "ftmRank", "ftaRank", "pctFTRank",
"orebRank", "drebRank", "trebRank", "astRank", "stlRank",
"blkRank", "tovRank", "ptsRank", "effRank",
"minutesRankPerGame", "fgmRankPerGame", "fgaRankPerGame", "fg3mRankPerGame",
"fg3aRankPerGame", "ftmRankPerGame", "ftaRankPerGame", "orebRankPerGame",
"drebRankPerGame", "trebRankPerGame", "astRankPerGame", "stlRankPerGame",
"blkRankPerGame", "tovRankPerGame", "ptsRankPerGame", "effRankPerGame",
"minutesRankPer36", "fgmRankPer36", "fg3mRankPer36", "fg3aRankPer36",
"ftmRankPer36", "ftaRankPer36", "orebRankPer36", "drebRankPer36",
"trebRankPer36", "astRankPer36", "stlRankPer36", "blkRankPer36",
"tovRankPer36", "ptsRankPer36", "effRankPer36",
"namePlayer", "yearSeason", "numberRound", "numberRoundPick", "numberPickOverall",
"nameOrganizationFrom", "typeOrganizationFrom",
"nameGroup", "nameGroupValue", "slugSeason", "wins", "losses", "pctWins",
"gpRank", "winsRank", "lossesRank", "pctWinsRank", "minutesRank", "fgmRank",
"fgaRank", "pctFGRank", "fg3mRank", "fg3aRank", "pctFG3Rank",
"rankFTM", "rankFTA", "pctFTRank", "orebRank", "drebRank",
"trebRank","astRank", "tovRank", "stlRank", "blkRank", "blkaRank",
"pfRank", "pfdRank", "ptsRank", "plusminusRank", "idCIF",
"slugCIF",
"typeMeasure", "modeSearch", "isPlusMinus", "isPaceAdjust", "isRank",
"idLeague", "slugSeason", "typeSeason", "idPlayoffRound", "idTeam", "idMonth",
"idTeamOpponent", "idPeriod", "countLastNGames",
"locationGame", "resultGame", "nameSeasonMonth", "segmentSeason", "rangeDaysRest",
"idPlayer",
"outcomeGame", "locationGame", "segmentSeason", "rangeDateFrom", "rangeDateTo",
"vsConference", "vsDivision", "segmentGame", "rangeShotClock",
"ratioASTtoTO", "ortgRank", "drtgRank", "netrtgRank",
"pctASTRank", "ratioASTtoTORank", "ratioASTRank", "pctOREBRank",
"pctDREBRank", "pctTREBRank", "pctTOVTmRank", "pctEFGRank",
"pctTSRank", "paceRank", "pieRank",
"ptsOffTOVRank", "ptsSecondChanceRank", "ptsFastBreakRank", "ptsPaintRank",
"potsOffTOVOpponentRank", "ptsSecondChanceOpponentRank", "ptsFastBreakOpponentRank",
"ptsPaintOpponentRank",
"pctFGAasFG2Rank", "pctFGAasFG3Rank", "pctPTSasFG2Rank",
"pctPTSasFG2asMRRank", "pctsPTSasFG3Rank", "pctPTSasFBRank",
"pctPTSasFTRank", "pctPTSasOffTOVRank", "pctPTSasPaintRank",
"pctFG2MasAssistedRank", "pctFG2MasUnassistedRank", "pctFG3MasAssistedRank",
"pctFG3MasUnassistedRank", "pctFGMasAssistedRank", "pctFGMasUnassistedRank",
"rateFTARank", "pctEFGOpponentRank", "rateFTAOpponentRank", "pctTOVOpponentRank",
"pctOREBOpponentRank",
"fgmOpponent", "fgaOpponent", "pctFGOpponent", "fg3mOpponent", "fg3aOpponent",
"pctFG3Opponent", "ftmOpponent", "ftaOpponent", "pctFTOpponent", "orebOpponent",
"drebOpponent", "trebOpponent", "astOpponent", "tovOpponent", "stlOpponent", "blkOpponent",
"blkaOpponent", "pfOpponent", "pfdOpponent", "ptsOpponent", "fgmOpponentRank", "fgaOpponentRank",
"pctFGOpponentRank", "fg3mOpponentRank", "fg3aOpponentRank", "pctFG3OpponentRank",
"ftmOpponentRank", "ftaOpponentRank", "pctFTOpponentRank", "orebOpponentRank",
"drebOpponentRank", "trebOpponentRank", "astOpponentRank", "tovOpponentRank",
"stlOpponentRank", "blkOpponentRank", "blkaOpponentRank", "pfOpponentRank",
"pfdOpponentRank", "ptsOpponentRank",
'fgmPerGame', 'fgaPerGame', 'fgaPerGameRank', 'fgmPerGameRank', 'pctUSGRank',
"dd2", "td3", "fptsRank", "dd2Rank", "td3Rank",
"pctFGMOfTeamRank", "pctFGAOfTeamRank", "pctFG3MOfTeamRank", "pctFG3AOfTeamRank",
"pctFTMOfTeamRank", "pctFTAOfTeamRank", "pctOREBOfTeamRank", "pctDREBOfTeamRank",
"pctTREBOfTeamRank", "pctASTOfTeamRank", "pctTOVOfTeamRank", "pctSTLOfTeamRank",
"pctBLKOfTeamRank", "pctBLKAOfTeamRank", "pctPFOfTeamRank", "pctPFDOfTeamRank",
"pctPTSOfTeamRank",
"namePlayerAbbr", "datetimeBirth", "countryPlayer", "nameOrganizationFrom",
"countSeasonsPlayed", "numberJersey", "hasDLeagueFlag", "yearDraft", "numberRound",
"numberOverallPick", "slugSeason", "countAllStarGames",
"eff", "pctFG3", "orebPerGame", "drebPerGame", "trebPerGame", "astPerGame", "tovPerGame",
"stlPerGame", "blkPerGame", "pfPerGame", "ptsPerGame", "ptsOpponentPerGame",
"pctFGPerGame", "pctFTPerGame",
"heightWOShoesInches", "heightWOShoes", "heightWShoesInches",
"heightWShoes", "wingspanInches", "wingspan", "reachStandingInches",
"reachStandingO", "pctBodyFat", "lengthHandInches", "widthHandInches",
"verticalLeapStandingInches", "verticalLeapMaxInches", "timeLaneAgility",
"timeModifiedLaneAgility", "timeThreeQuarterCourtSprint", "repsBenchPress135",
"setSpot15CornerLeft", "setSpot15BreakLeft", "setSpot15TopKey",
"setSpot15BreakRight", "setSpot15CornerRight", "setSpot15CornerLeftCollege",
"setSpot15BreakLeftCollege", "setSpot15TopKeyCollege", "setSpot15BreakRightCollege",
"setSpot15CornerRightCollege", "setSpot15CornerLeftNBA", "setSpot15BreakLeftNBA",
"setSpot15TopKeyNBA", "setSpotBreakRightNBA", "setSpotCornerRightNBA",
"setOffDrib15BreakLeft", "setSpotOffDrib15TopKey", "setOffDrib15BreakRight",
"setOffDribBreakLeftCollege", "setOffDribTopKeyCollege", "setOffDribBreakRightCollege",
"setOnMove15", "setOnMoveCollege",
"filterContext", "measureContext", "slugTeam", "numberRank", "slugScope", "categoryStat",
"ratioSTLtoTOV",
"typeSeason", "isActiveWithTeam", "gpRankF", "minutsRankF",
"fgmRankF", "fgaRankF", "pctFGRankF", "fg3mRankF", "fg3aRankF",
"pctFG3RankF", "ftmRankF", "ftaRankF", "pctFTRankF",
"orebRankF", "drebRankF", "trebRankF", "astRankF", "pfRankF",
"stlRankF", "tovRankF", "blkRankF", "fptsRankF",
"numberEvent", "pctWinProbHome", "pctWinProbAway", "ptsTotalHome", "ptsTotalVisitor",
"ptsMarginHome", "isHomePossession", "numberHomeG", "descriptionPlay",
"isPlayVisible",
"typeTransaction", "dateTransaction", "descriptionTransaction",
"idTeamFrom", "sortGroup",
"captionItem", "descriptionItem", "datetimePublished",
"datetimeUpdatedLast", "idUpdate", "idRotoWorld", "nameFirst", "nameLast",
"groupPosition", "slugTeam", "codeTeam", "dateISO", "numberPriority", "articleHeadline",
"slugInjured", "statusInjury", "locationInjury", "typeInjury",
"detailInjury", "sideInjury",
"slugSeason", "wins", "losses", "pctWins", "rankConference", "rankDivision",
"countWinsPlayoffs", "countLossesPlayoffs", "countConferenceTitles", "countDivisionTitles", "descriptionNBAFinalsAppearance",
"idPlayer", "nameFirst", "nameLast", "numberJersey",
"groupPosition", "idTeam", "nameTeam", "slugTeam", "nameTeamShort",
"poss", "pctFrequency", "pts", "ppp", "pppWorseTeams", "pppBetterTeams", "possPerGame",
"fgaPerGame", "fgmPerGame", "fgMissPerGame", "fgmTotal", "pctFG", "pctEFG", "pctFTDrawn", "pctShootingFoulDrawn", "pctAnd1Drawn",
"pctScore", "typeSet", "yearSeason", "typeSeason",
"idSeason", "cityTeam", "nameConference", "recordConference", "rankPlayoffs",
"slugPlayoffClinch", "nameDivison", "RecordDivision", "rankDivision",
"pctWinTeam", "rankTeam", "recordOverall", "recordHome", "recordAway", "recordLast10", "recordLast10Home",
"recordLast10Away", "recordOT", "recordThreePTSOrLess", "recordTenPTSOrMore", "streakLongHome",
"slugStreakLongHomeStreak", "streakLongAway", "slugStreakLongAway", "streakWinLong",
"streakLossLong", "streakHomeCurrent", "slugStreakHomeCurrent",
"streakAwayCurrent", "slugStreakAwayCurrent", "streakCurrent",
"slugStreakCurrent", "gamesBackConference", "gamesBackDivision",
"hasClinchedConferenceTitle", "hasClinchedDivisionTitle", "hasClinchedPlayoffBirth",
"isEliminatedConference", "isEliminatedDivision", "recordAheadAtHalf",
"recordBehindAtHalf", "recordTiedAtHalf", "recordAheadAtThird", "recordBehindAtThird",
"recordTiedAtThird", "recordScore100PTS", "recordOpponentScore100PTS", "recordOpponentOver500",
"recordLeadInFGPCT", "recordLeadInReb", "recordFewerTurnovers", "ptsPerGameTeam", "ptsPerGameOpponent",
"ptsPerGameDiff", "recordVsEast", "recordVsAtlantic", "recordVsCentral", "recordVsWest",
"recordVsPacific", "recordVsMidwest", "recordJan", "recordFeb", "recordMar", "recordApr", "reocrdMay",
"recordJun", "recordJul", "recordAug", "recordSep", "recordOct", "recordNov", "recordDec",
"recordVsNorthwest", "recordVsSoutheast", "recordVsSouthwest",
"nameConference", "rankSeedHigh", "teamNameShortHigh", "idTeamHigh",
"rankSeedLow", "teamNameShortLow", "idTeamLow", "winsPlayoffSeedLigh",
"lossesPlayoffsSeedHIgh", "gamesRemainingSeedHome", "gamesRemainingAtHomeSeedHome",
"gamesRemainingAwaySeedHome",
"gamesRemaining", "gamesRemainingHome", "gamesRemainingAway",
"pctWinTeam", "recordDivision", "recordConference", "recordAway", "gamesBack", "gamesRemainingOver500", "gamesRemainingOver500Home",
"gamesRemainingOver500Away", "gamesRemainingUnder500", "gamesRemainingUnder500Home", "gamesRemainingUnder500Away",
"rankCriteria", "hasClinchedPlayoffs", "hasClinchedConference",
"hasClinchedDivision", "isEliminatedPlayoffs", "strengthScheduleRemaining",
"teamName", "yearFounded", "cityTeam", "nameArena", "capacityArena",
"nameOwner", "nameGeneralManager", "nameHeadCoach", "nameDLeagueAffiliate",
"yearActiveUntil", "nameAccount", "urlAccount", "yearSeason",
"nameTeamOpponent", "idPlayer", "slugSeasonsWithTeam",
"slugNetworkTVHome", "slugTVNetworkAway",
"nameArena",
"dateStandings", "gp", "recordHome", "recordAway",
"idPlayerPTSLeader", "namePlayerPTSLeader", "idPlayerTREBLeader", "namePlayerTREBLeader",
"idPlayerASTLeader", "namePlayerASTLeader",
"idTeam", "wins", "losses", "pctWinRemove", "pctWins", "pctLossRemove", "pctLosses",
"gamesBehindPlayoffs", "gamesBehindDivision", "codePlayoffRemove", "codePlayoffCling",
"rankConference", "winsConference", "lossesConference", "winsDivison", "lossesDivision", "winsHome",
"lossesHome", "winsAway", "lossesAway", "winsLast10", "lossesLast10",
"streakCurrent", "rankDivision", "isWinStreak", "ptsTieBreaker",
"typePass", "namePlayerPasser", "idPlayerPasser", "pctFrequency",
"fg2m", "fg2a", "pctFG2", "namePlayerPassTo",
"groupOrderValue", "typeFilterSecondary" , "idPlayerOnOff", "namePlayerOnOff", "typePlayerOnOff",
"typeFilter", "trebFrequency", "orebContested", "drebContested", "trebContested", "pctTREBContested",
"orebUncontested", "drebUncontested", "trebUncontested", "pctTREBUncontested",
"orderSort", "typeFilter",
"typeFilter",
"frequencyFGA", "frequencyFG2A", "frequencyFG3A",
"typeFilter", "typeFilter",
"typeFilter", "typeFilter",
"idGame", "idGroup", "nameGroup",
"typeFilter", "typeFilter",
"nameConference", "nameDivision",
"ptsPerGameTeam", "trebPerGameTeam",
"astPerGameTeam", "ptsPerGameOpponent",
"dateGameLastPlayed",
"idTeamOpponent",
"seasonYear",
"numberNextNGames",
"cityTeamHome", "cityTeamAway", "slugTeamHome",
"slugTeamAway", "teamNameHome", "teamNameAway",
"recordHome", "recordAway",
"namePlayerLastFirst",
"idPlayer", "typeFilter", "pctFrequency", "fgmDefending",
"fgaDefending", "pctFGDefending", "pctFGAvg", "diffFGPct",
"typeDraftPick", "categoryDefense",
"idPlayerTeam", "slugTeam", "categoryClutchTime",
"ptsDifference", "categoryAheadBehind",
"rangeShotDistance",
"rangeDribble", "rangeGeneral", "boxOuts",
"possessions",
"ptsPlayerAllowed",
"ptsTeamAllowed",
"pfShootingCommitted",
"pfNonShootingComitted",
"fgm3mContested",
"fgm3Contested",
"pctFG3M",
"idTeamOffense", "slugTeamOffense", "cityTeamOffense", "nicknameTeamOffense",
"idPlayerOffense", "namePlayerOffense", "idTeamDefense", "slugTeamDefense",
"cityTeamDefense", "nicknameTeamDefense", "idPlayerDefense", "namePlayerDefense",
"pctOffenseMatchup", "blkHelp", "blkHelpRecorded", "pfDefensiveDrawn", "pfOffensiveCommitted",
"isNBAFranchise", "isAllStar", "cityTeam", "cityTeamAlt",
"nameTeam", "slugTeam", "slugTeamURL", "nameConference", "nameDivision", "teamName",
"nameFirst",
"nameLast",
"idPlayer",
"numberPlayer",
"isActive",
"slugPosition",
"heightFeet",
"heightInches",
"heightMeters",
"weightLBS",
"weightKG",
"dateBirth",
"dataTeams",
"dataDraft",
"yearDebut",
"countYearsPro",
"nameCollege",
"nameOrganizationFrom",
"nameCountry",
"idPlayer",
"idTeam",
"yearSeasonFirst","yearSeasonLast",
"numberJersey",
"countGames",
"pctDoubleDouble",
"pctTripleDouble",
"typeBoxScore",
"typeDataSet",
"orderBoxScore",
"statusPlayerGame",
"seconds",
"ortg",
"drtg",
"netrtg",
"pctTOV",
"pctUSG",
"nameCityTeam",
"minutesPossesions",
"secondsPossesions",
"secondsPossesionsAvg",
"paceOffense",
"paceDefense",
"ptsTeam",
"ptsOpponent",
"plusminus",
"pctTOVTeam",
"nameFirst",
"nameLast",
"numberJersey",
"slugTeam",
"teamName",
"idTeam",
"cityTeam",
"minutes",
"seconds",
"secondsTotal",
"fga",
"fgm",
"fg3a",
"fg3m",
"fta",
"ftm",
"oreb",
"dreb",
"treb",
"ast",
"stl",
"blk",
"pf",
"pts",
"tov",
"fbpts",
"fbptsa",
"fbptsm",
"pip",
"pipa",
"pipm",
"isStarter",
"idPlayer",
"plusminus",
"blka",
"technicalfouls",
"locationGame",
"descriptionStat",
"idMobile",
"idGame",
"dateGame",
"datetimeGameHome",
"datetimeGameAway",
"datetimeGameEastCoast",
"dateGameUTC",
"timeUTC",
"cityArena",
"stateArena",
"slugGame",
"urlNBAJSON",
"ar",
"p",
"st",
"statusGame",
"timeRemaining",
"nameArena",
"countAttendance",
"durationGame",
"ortgE",
"drtgE",
"netrtgE",
"pctUSGE",
"paceE",
"flagNBA",
"pctTOVE",
"boxOutsOffense",
"boxOutsDefense",
"looseBallsRecoveredOffense",
"looseBallsRecoveredDefense",
"boxOutsPlayerTeamRebound",
"boxOutPlayerRebound",
"ptsScreenAssist",
"boxOutsPlayerTREB",
"idLeagueOtherExperience",
"removeOFF_RATING", "removeDEF_RATING", "removeNET_RATING",
"pctTOVE", "pacePer40PACE_PER40", "removePACE", "rankORTGE",
"removeOFF_RATING_RANK", "rankDRTGE", "removeDEF_RATING_RANK",
"rankNTRGE", "removeNET_RATING_RANK", "rankPCTOVE",
"rankPCTUSGE", "rankPACEE", "removePACE_RANK"
)
)
}
resolve_nba_names <- function(json_names) {
df_nba_names <-
dictionary_nba_names()
json_names %>%
map_chr(function(name){
no_name <-
df_nba_names %>%
filter(nameNBA == name) %>%
nrow() == 0
if (no_name) {
glue::glue("Missing {name} in dictionary") %>% cat(fill = T)
return(name)
}
df_nba_names %>%
filter(nameNBA == name) %>%
pull(nameActual) %>%
unique() %>%
.[[1]]
})
}
char_words <-
function(words = c("name[A-Z]", "date[A-Z]", "slug[A-Z]", "outcome[A-Z]", "team[A-Z]", 'height[A-Z]', 'result[A-Z]', "segment[A-Z]", "range[A-Z]", "vs[A-Z]", "mode[A-Z]", "category[A-Z]", "record[A-Z]", "^url[A-Z]", "code[A-Z]",
"description", "city", "time[A-Z]", "nickname[A-Z]", "group[A-Z]", "location[A-Z]", "zone[A-Z]", "type[A-Z]")){
words %>% stringr::str_c(collapse = "|")
}
### ned to think about htis
munge_play_description <- function(data) {
}
munge_nba_data <- function(data) {
if (data %>% tibble::has_name("datetimeBirth")) {
data <-
data %>%
mutate(datetimeBirth = datetimeBirth %>% readr::parse_datetime() %>% as.Date())
}
if (data %>% tibble::has_name("timeGame")) {
data <-
data %>%
tidyr::separate(timeGame, into = c("hours", "minutes"), sep = "\\:") %>%
mutate_at(c("hours", "minutes"),
funs(. %>% as.numeric())) %>%
mutate(lengthGameMinutes = (hours * 60) + minutes) %>%
dplyr::select(-one_of(c("hours", "minutes")))
}
if (data %>% tibble::has_name("minutes")) {
if (data$minutes %>% str_count("\\:") %>% sum(na.rm = T) > 0) {
data <- data %>%
tidyr::separate(minutes, into = c("min", "seconds"), sep = "\\:") %>%
mutate_at(c("min", "seconds"),
funs(. %>% as.numeric())) %>%
mutate(seconds = seconds / 60,
minExact = min + seconds) %>%
dplyr::select(-c(min, seconds)) %>%
dplyr::select(one_of(c("idGame", "descriptionComment", "minExact")), everything()) %>%
suppressWarnings()
}
}
char_names <- data %>% dplyr::select(dplyr::matches(char_words())) %>% names()
num_names <-
data %>% dplyr::select(-one_of(char_names)) %>% names()
data <-
data %>%
mutate_at(num_names,
funs(. %>% as.numeric())) %>%
suppressWarnings()
if (data %>% tibble::has_name("fga") && data %>% tibble::has_name("fg3a")) {
data <-
data %>%
mutate(fg2m = fgm - fg3m,
fg2a = fga - fg3a,
pctFG2 = if_else( fg2a > 0 , fg2m / fg2a, 0 )
)
}
if (data %>% tibble::has_name("slugMatchup")){
data <-
data %>%
mutate(locationGame = case_when(slugMatchup %>% str_detect("@") ~
"A",
T ~ "H")) %>%
tidyr::separate(
slugMatchup,
into = c("remove", "slugOpponent"),
sep = c("vs.|@"),
remove = F
) %>%
dplyr::select(-remove) %>%
mutate_if(is.character,
funs(. %>% str_trim())) %>%
dplyr::select(slugSeason:outcomeGame, locationGame, everything())
}
if (data %>% tibble::has_name("groupStartPosition")){
data <-
data %>%
mutate(isStarter = !is.na(groupStartPosition)) %>%
dplyr::select(dplyr::matches("id|name|slug|city|is"), everything())
}
if (data %>% tibble::has_name("dateGame")) {
if (data$dateGame %>% str_detect("T") %>% sum(na.rm = T) > 0) {
data <-
data %>%
mutate(dateGame = dateGame %>% substr(1,10) %>% lubridate::ymd())
}
}
if (data %>% tibble::has_name("dateGameLast")) {
if (data$dateGameLast %>% str_detect("T") %>% sum(na.rm = T) > 0) {
data <-
data %>%
mutate(dateGameLast = dateGameLast %>% substr(1,10) %>% lubridate::ymd())
} else {
data <-
data %>%
mutate(dateGameLast = dateGameLast %>% lubridate::mdy())
}
}
if (data %>% tibble::has_name("slugScore")) {
data <-
data %>%
tidyr::separate(slugScore, into = c("scoreAway", "scoreHome"), sep = "\\ - ", remove = F) %>%
mutate_at(c("scoreHome", "scoreAway"),
funs(. %>% as.numeric())) %>%
mutate(slugTeamLeading = case_when(marginScore == 0 ~ "Tie",
marginScore < 0 ~ "Away",
TRUE ~ "Home"))
}
if (data %>% tibble::has_name("nameGroup") && data %>% tibble::has_name("nameGroupValue")) {
data <-
data %>%
dplyr::select(-nameGroup) %>%
dplyr::rename(typeFilter = nameGroupValue)
}
if (data %>% tibble::has_name("timeQuarter")) {
data <-
data %>%
tidyr::separate(
"timeQuarter",
into = c("minuteRemainingQuarter", "secondsRemainingQuarter"),
sep = "\\:",
remove = F
) %>%
mutate_at(c("minuteRemainingQuarter", "secondsRemainingQuarter"),
funs(. %>% as.numeric())) %>%
mutate(
minuteGame = ((numberPeriod - 1) * 12) + (12 - minuteRemainingQuarter) + (((
60 - secondsRemainingQuarter
) / 60) - 1),
timeRemaining = 48 - ((numberPeriod - 1) * 12) - (12 - minuteRemainingQuarter) -
((60 - secondsRemainingQuarter) / 60 - 1)
) %>%
dplyr::select(idGame:numberPeriod, minuteGame, timeRemaining, everything())
}
if (data %>% tibble::has_name("dateGameLastPlayed")) {
data <-
data %>%
mutate(dateGameLastPlayed = dateGameLastPlayed %>% substr(1,10) %>% lubridate::ymd())
}
if (data %>% tibble::has_name("slugRecordTeam")){
data <-
data %>%
tidyr::separate(slugRecordTeam,
sep = "\\-",
into = c("winsTeam", "lossesTeam"),
remove = F) %>%
mutate_at(c("winsTeam", "lossesTeam"),
funs(. %>% as.numeric())) %>%
mutate(countGamesTeam = winsTeam + lossesTeam,
pctWinTeam = winsTeam / (countGamesTeam)) %>%
dplyr::select(idGame, slugRecordTeam,countGamesTeam, pctWinTeam, everything())
}
data <-
data %>%
mutate_if(is.character,
funs(str_trim)) %>%
mutate_if(is.character,
funs(ifelse(. == "", NA, .)))
logicial_names <-
data %>% dplyr::select(dplyr::matches("^has[A-Z]|^is[A-Z]")) %>% names()
if (logicial_names %>% length() > 0) {
data <-
data %>%
mutate_at(logicial_names,
funs(. %>% as.numeric() %>% as.logical()))
}
id_names <-
data %>% dplyr::select(dplyr::matches("idTeam", "idPlayer")) %>% names()
if (id_names %>% length() > 0) {
data <-
data %>%
mutate_at(id_names,
funs(. %>% as.numeric()))
}
if (data %>% has_name("teamName") & !data %>% has_name("cityTeam")) {
data <-
data %>%
dplyr::rename(nameTeam = teamName)
}
if (data %>% tibble::has_name("namePlayerOnOff")) {
assign_nba_players()
data <-
data %>%
dplyr::select(-one_of("namePlayerOnOff")) %>%
left_join(
df_dict_nba_players %>% select(idPlayerOnOff = idPlayer,
namePlayerOnOff = namePlayer)
) %>%
dplyr::select(dplyr::matches("type[A-Z]|id[A-Z]|name[A-Z]"),
everything()) %>%
suppressMessages()
data <-
data %>%
filter(!namePlayerOnOff %>% is.na())
data <-
data %>%
dplyr::rename(typeFilter = namePlayerOnOff)
}
if (data %>% tibble::has_name("fg3a") && data %>% tibble::has_name("fg3m")) {
data <-
data %>%
mutate(pctFG3 = fg3m / fg3a)
}
if (data %>% tibble::has_name("namePlayerPasser")) {
assign_nba_players()
data <-
data %>%
dplyr::select(-one_of("namePlayerPasser")) %>%
dplyr::rename(idPlayerPasserPassTo = idPlayerPasser) %>%
left_join(
df_dict_nba_players %>% select(idPlayerPasserPassTo = idPlayer,
namePlayerPasserPassTo = namePlayer)
) %>%
dplyr::select(dplyr::matches("type[A-Z]|id[A-Z]|name[A-Z]"),
everything()) %>%
suppressMessages()
}
if (data %>% tibble::has_name("namePlayerPassTo")) {
assign_nba_players()
data <-
data %>%
dplyr::rename(idPlayerPasserPassTo = idPlayerPasser) %>%
dplyr::select(-one_of("namePlayerPassTo")) %>%
left_join(
df_dict_nba_players %>% select(idPlayerPasserPassTo = idPlayer,
namePlayerPasserPassTo = namePlayer)
) %>%
dplyr::select(dplyr::matches("type[A-Z]|id[A-Z]|name[A-Z]"),
everything()) %>%
suppressMessages()
}
data <-
data %>%
dplyr::select(-dplyr::matches("CIF")) %>%
dplyr::select(-one_of(c("orderSort", "idLeague", "namePlayerLastFirst", "dateGameLastPlayed"))) %>%
suppressWarnings()
if (data %>% tibble::has_name("idTeam1")) {
data <-
data %>%
dplyr::rename(idTeam = idTeam1)
}
if (data %>% has_name("yearSeasonFirst")) {
data <-
data %>%
mutate(yearSeasonFirst = yearSeasonFirst + 1,
yearSeasonLast = yearSeasonLast + 1)
}
data <-
data %>%
mutate_at(
.vars = data %>% select(dplyr::matches("^pts|^blk")) %>% names(),
funs(. %>% as.numeric())
)
data <-
data %>%
dplyr::select(which(colMeans(is.na(.)) < 1))
char_names <-
data %>% select_if(is.character) %>% names()
data <-
data %>%
dplyr::select(one_of(char_names), everything()) %>%
dplyr::select(
dplyr::matches(
"slugTable|group[A-Z]|type[A-Z]|mode[A-Z]|id[A-Z]|name[A-Z]|year|slug[A-Z]|number[A-Z]|date|outcome|^url|gp|gs|minutes[A-Z]|passes|^fg|^pct[A-Z]"
),
everything()
)
data <-
data %>%
mutate_if(is.numeric,
funs(ifelse(. %>% is.nan(), 0 , .)))
data
}
nba_json_to_df <-
function(json, table_id = 1) {
json_names <-
json$resultSets$headers[[table_id]]
data <-
json$resultSets$rowSet[table_id] %>%
data.frame(stringsAsFactors = F) %>%
dplyr::as_tibble() %>%
purrr::set_names(json_names)
if (data %>% tibble::has_name("G")) {
data <-
data %>%
dplyr::select(-G)
}
actual_names <-
names(data) %>% resolve_nba_names()
data <-
data %>%
purrr::set_names(actual_names)
if (data %>% nrow() == 0) {
return(invisible())
}
data %>%
munge_nba_data()
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.