#' 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)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.