R/get_data_for_scatter_plot.R

#' @title Make Scatter Plot
#' @description plots scatter plot with given x,y variables and season
#' @keywords NBA stat.nba.com basketball reference
#' @importFrom magrittr %>%
#' @export
#' @examples
#' get_data_for_scatter_plot('2017-18')


get_data_for_scatter_plot <- function(year, min_filter_1 = 'field_goals_attempted', min_filter_2 = 'games',
                                      min_1 = 0, min_2 = 0) {

  year_num <- as.numeric(strsplit(year,'-')[[1]][1]) + 1

  url <- 'https://raw.githubusercontent.com/emilykuehler/basketballstatsR/master/data-raw/player_card.csv'

  player_ids <- readr::read_csv(url)

  players2019 <- player_ids %>%
    dplyr::filter(init_season <= year_num & final_season >= year_num) %>%
    #todo: figure out why george kind throws error
    dplyr::filter(!player_name %in% c('george king'))

  advanced_stats <- player_advanced_stats(players2019$player_name, year = '2018-19')

  counting_stats <- player_season_totals(players2019$player_name, year = '2018-19')

  advanced_stats_df <- data.frame(matrix(ncol = 28, nrow = 0))
  colnames(advanced_stats_df) <- c(names(advanced_stats[[1]]),'player')
  for (i in 1:length(advanced_stats)) {
    df <- advanced_stats[[i]]
    player_name <- names(advanced_stats)[[i]]
    if (nrow(df) > 1) {
      df <- df %>%
        dplyr::filter(team=='TOT')
    }
    if(nrow(df)>0) {
      df$player <- player_name
      advanced_stats_df <- advanced_stats_df %>%
        dplyr::bind_rows(df)
      print(player_name)
    }
  }

  counting_stats_df <- data.frame(matrix(ncol = 31, nrow = 0))
  colnames(counting_stats_df) <- c(names(counting_stats[[1]]),'player')
  for (i in 1:length(counting_stats)) {
    df <- counting_stats[[i]]
    player_name <- names(counting_stats)[[i]]
    if (nrow(df) > 1) {
      df <- df %>%
        dplyr::filter(team=='TOT')
    }
    if(nrow(df)>0) {
      df$player <- player_name
      counting_stats_df <- counting_stats_df %>%
        dplyr::bind_rows(df)
      print(player_name)
    }
  }

  stats_merged <- counting_stats_df %>%
    dplyr::inner_join(advanced_stats_df, by=c('player', 'team', 'position','games','season', 'age',
                                              'league', 'minutes_played'))

  stats_merged <- stats_merged %>%
    dplyr::filter(get(min_filter_1) >= min_1 & get(min_filter_2) >= min_2)

  return (stats_merged)

}
emilykuehler/basketballstatsR documentation built on May 31, 2019, 10:01 a.m.