#' @title Scrape Player Per 36 Mins Stats
#' @param players a vector of player names
#' @description Gets Player Stats, Normalized Per 36 Mins
#' @keywords NBA basketball-reference
#' @importFrom magrittr %>%
#' @export
#' @examples
#' player_per_36mins(c("Stephen Curry", "Steven Adams"))
#'
player_per_36mins <- function(players) {
print("test merge")
#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, links) %>%
subset(player_name %in% tolower(players))
player_df$player_name[duplicated(player_df$player_name)] <- paste0(player_df$player_name[duplicated(player_df$player_name)],
player_df$init_season[duplicated(player_df$player_name)])
#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()
for (row_num in 1:nrow(player_df)) {
link_suffix <- player_df$links[row_num]
url <- paste0(base_url, link_suffix)
df <- url2per36mins(url)
name <- player_df$player_name[which(player_df$links==link_suffix)]
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.