#' @title Scrape Game Logs For Specified Year, Players
#' @param players a vector of player names
#' @param years vector of years corresponding to player names
#' @description Gets Player Game Logs
#' @keywords NBA basketball-reference
#' @importFrom magrittr %>%
#' @export
#' @examples
#' player_game_logs(c("Stephen Curry", "Steven Adams"), c(2017,2018))
# will return Curry's game logs for 2017, Adams's game logs for 2018
player_game_logs <- function(players, years) {
input_df <- data.frame(player_name=tolower(players), year=years, stringsAsFactors = FALSE)
#base url
base_url <- 'https://www.basketball-reference.com/'
#load data frame with player names and urls
player_df <- readr::read_csv("https://raw.githubusercontent.com/emilykuehler/basketballstatsR/master/data-raw/player_card.csv") %>%
dplyr::mutate(player_name = tolower(player_name)) %>%
dplyr::select(player_name, init_season, final_season, links) %>%
subset(player_name %in% input_df$player_name) %>%
dplyr::mutate(links = strsplit(links,".html")) %>%
dplyr::mutate(links = substr(links, 2, nchar(links))) %>%
dplyr::full_join(input_df, by=c("player_name")) %>%
dplyr::mutate(year = ifelse(year >= init_season & year <= final_season, year, NA)) %>%
subset(!is.na(year)) %>%
#get links for game logs
dplyr::mutate(links = strsplit(links,".html")) %>%
dplyr::mutate(links = paste0(base_url, links, "/gamelog/", year))
#check to see if user has input any names that aren't in database
player_vec <- tolower(players)
bad_names <- player_vec[!player_vec %in% player_df$player_name]
#give user msg if they messed up
if(length(bad_names > 0)) {
print("Several player names were either mistyped or not in the database.")
print("No data will be collected for:")
print(bad_names)
}
df_list <- list()
# grab tables using URLs and store in list
for (row_num in 1:nrow(player_df)) {
url <- player_df$links[row_num]
print (url)
year <- player_df$year[row_num]
name <- paste0(player_df$player_name[row_num], year)
df <- url2playergamelogs(url, player_df$player_name[row_num], year)
df <- clean_game_logs(df, year)
df_list[[name]] <- df
}
return (df_list)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.