R/get_injury_data.R

Defines functions get_injury_data

Documented in get_injury_data

#' Get Injury Data
#'
#' This function web scrapes from basketball-reference.com to get all current injury listings
#'
#' @return
#' @export
#'
#' @importFrom rvest read_html html_nodes html_attr html_text
#' @importFrom dplyr select rename mutate
#' @importFrom tidyr separate
#' @importFrom stringi stri_trans_general
#' @import magrittr
#'
#' @examples
#' df <- get_injury_data()
#'
get_injury_data <- function(){
  urlMain <- 'https://www.basketball-reference.com/friv/injuries.fcgi'
  webpageMain <- read_html(urlMain)
  col_namesMain <- webpageMain %>%
    html_nodes("table#injuries > thead > tr > th") %>%
    html_attr("data-stat")
  player <- webpageMain %>%
    html_nodes("table#injuries > tbody > tr > th") %>%
    html_text()
  dataMain <- webpageMain %>%
    html_nodes("table#injuries > tbody > tr > td") %>%
    html_text() %>%
    matrix(ncol = length(col_namesMain) - 1, byrow = TRUE)
  injuryData <- as.data.frame(cbind(player, dataMain), stringsAsFactors = FALSE)
  injuryData <- injuryData %>%
    rename(Player = player, Team = V2, Date = V3, Description = V4)
  injuryData$Date <- gsub("^.{0,4}", "", injuryData$Date)
  injuryData <- injuryData %>%
    separate(Description, c('stepone', 'Description'), sep = ' - ')
  injuryData <- injuryData %>%
    separate(stepone, c('Status', 'Injury'), sep = '\\(')
  injuryData$Injury <- substr(injuryData$Injury, 1, nchar(injuryData$Injury)-1)

  injuryData <- injuryData %>%
    select(Player, Team, Date, Status, Injury, Description) %>%
    mutate(Team = replace(Team, Team == 'Atlanta Hawks', 'ATL')) %>%
    mutate(Team = replace(Team, Team == 'Boston Celtics', 'BOS')) %>%
    mutate(Team = replace(Team, Team == 'Brooklyn Nets', 'BKN')) %>%
    mutate(Team = replace(Team, Team == 'Charlotte Hornets', 'CHA')) %>%
    mutate(Team = replace(Team, Team == 'Chicago Bulls', 'CHI')) %>%
    mutate(Team = replace(Team, Team == 'Cleveland Cavaliers', 'CLE')) %>%
    mutate(Team = replace(Team, Team == 'Dallas Mavericks', 'DAL')) %>%
    mutate(Team = replace(Team, Team == 'Denver Nuggets', 'DEN')) %>%
    mutate(Team = replace(Team, Team == 'Detroit Pistons', 'DET')) %>%
    mutate(Team = replace(Team, Team == 'Golden State Warriors', 'GSW')) %>%
    mutate(Team = replace(Team, Team == 'Houston Rockets', 'HOU')) %>%
    mutate(Team = replace(Team, Team == 'Indiana Pacers', 'IND')) %>%
    mutate(Team = replace(Team, Team == 'Los Angeles Clippers', 'LAC')) %>%
    mutate(Team = replace(Team, Team == 'Los Angeles Lakers', 'LAL')) %>%
    mutate(Team = replace(Team, Team == 'Memphis Grizzlies', 'MEM')) %>%
    mutate(Team = replace(Team, Team == 'Miami Heat', 'MIA')) %>%
    mutate(Team = replace(Team, Team == 'Milwaukee Bucks', 'MIL')) %>%
    mutate(Team = replace(Team, Team == 'Minnesota Timberwolves', 'MIN')) %>%
    mutate(Team = replace(Team, Team == 'New Orleans Pelicans', 'NOP')) %>%
    mutate(Team = replace(Team, Team == 'New York Knicks', 'NYK')) %>%
    mutate(Team = replace(Team, Team == 'Oklahoma City Thunder', 'OKC')) %>%
    mutate(Team = replace(Team, Team == 'Orlando Magic', 'ORL')) %>%
    mutate(Team = replace(Team, Team == 'Philadelphia 76ers', 'PHI')) %>%
    mutate(Team = replace(Team, Team == 'Phoenix Suns', 'PHX')) %>%
    mutate(Team = replace(Team, Team == 'Portland Trail Blazers', 'POR')) %>%
    mutate(Team = replace(Team, Team == 'Sacramento Kings', 'SAC')) %>%
    mutate(Team = replace(Team, Team == 'San Antonio Spurs', 'SAS')) %>%
    mutate(Team = replace(Team, Team == 'Toronto Raptors', 'TOR')) %>%
    mutate(Team = replace(Team, Team == 'Utah Jazz', 'UTA')) %>%
    mutate(Team = replace(Team, Team == 'Washington Wizards', 'WAS')) %>%
    mutate(Player = stri_trans_general(Player, id = "Latin-ASCII"))


  print(paste0('Retrieving ', nrow(injuryData), ' Injury Rows'))
  return(injuryData)

}
jyablonski/practice_package documentation built on Dec. 21, 2021, 5:14 a.m.