R/player_per_36mins.R

#' @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)
}
emilykuehler/basketballstatsR documentation built on May 31, 2019, 10:01 a.m.