Nothing
#' @rdname fg_batter_game_logs
#' @title **Scrape Batter Game Logs from FanGraphs**
#' @description This function allows you to scrape game logs by year for a batter from FanGraphs.com.
#' @param playerid This is the playerid used by FanGraphs for a given player
#' @param year The season for which game logs should be returned (use the YYYY format)
#' @return A data frame of batter game logs.
#' |col_name |types |
#' |:-------------|:---------|
#' |PlayerName |character |
#' |playerid |integer |
#' |Date |character |
#' |Team |character |
#' |Opp |character |
#' |season |integer |
#' |Age |integer |
#' |BatOrder |character |
#' |Pos |character |
#' |G |numeric |
#' |AB |numeric |
#' |PA |numeric |
#' |H |numeric |
#' |1B |numeric |
#' |2B |numeric |
#' |3B |numeric |
#' |HR |numeric |
#' |R |numeric |
#' |RBI |numeric |
#' |BB |numeric |
#' |IBB |numeric |
#' |SO |numeric |
#' |HBP |numeric |
#' |SF |numeric |
#' |SH |numeric |
#' |GDP |numeric |
#' |SB |numeric |
#' |CS |numeric |
#' |AVG |numeric |
#' |GB |numeric |
#' |FB |numeric |
#' |LD |numeric |
#' |IFFB |numeric |
#' |Pitches |numeric |
#' |Balls |numeric |
#' |Strikes |numeric |
#' |IFH |numeric |
#' |BU |numeric |
#' |BUH |numeric |
#' |BB% |numeric |
#' |K% |numeric |
#' |BB/K |numeric |
#' |OBP |numeric |
#' |SLG |numeric |
#' |OPS |numeric |
#' |ISO |numeric |
#' |BABIP |numeric |
#' |GB/FB |numeric |
#' |LD% |numeric |
#' |GB% |numeric |
#' |FB% |numeric |
#' |IFFB% |numeric |
#' |HR/FB |numeric |
#' |IFH% |numeric |
#' |BUH% |numeric |
#' |wOBA |numeric |
#' |wRAA |numeric |
#' |wRC |numeric |
#' |Spd |numeric |
#' |wRC+ |numeric |
#' |wBSR |numeric |
#' |WPA |numeric |
#' |-WPA |numeric |
#' |+WPA |numeric |
#' |RE24 |numeric |
#' |REW |numeric |
#' |pLI |numeric |
#' |phLI |numeric |
#' |PH |numeric |
#' |WPA/LI |numeric |
#' |Clutch |numeric |
#' |FB%1 |numeric |
#' |FBv |numeric |
#' |SL% |numeric |
#' |SLv |numeric |
#' |CT% |numeric |
#' |CTv |numeric |
#' |CB% |numeric |
#' |CBv |numeric |
#' |CH% |numeric |
#' |CHv |numeric |
#' |SF% |numeric |
#' |SFv |numeric |
#' |KN% |numeric |
#' |KNv |numeric |
#' |XX% |numeric |
#' |wFB |numeric |
#' |wSL |numeric |
#' |wCT |numeric |
#' |wCB |numeric |
#' |wCH |numeric |
#' |wSF |numeric |
#' |wKN |numeric |
#' |wFB/C |numeric |
#' |wSL/C |numeric |
#' |wCT/C |numeric |
#' |wCB/C |numeric |
#' |wCH/C |numeric |
#' |wSF/C |numeric |
#' |wKN/C |numeric |
#' |O-Swing% |numeric |
#' |Z-Swing% |numeric |
#' |Swing% |numeric |
#' |O-Contact% |numeric |
#' |Z-Contact% |numeric |
#' |Contact% |numeric |
#' |Zone% |numeric |
#' |F-Strike% |numeric |
#' |SwStr% |numeric |
#' |Pull |numeric |
#' |Cent |numeric |
#' |Oppo |numeric |
#' |Soft |numeric |
#' |Med |numeric |
#' |Hard |numeric |
#' |bipCount |numeric |
#' |Pull% |numeric |
#' |Cent% |numeric |
#' |Oppo% |numeric |
#' |Soft% |numeric |
#' |Med% |numeric |
#' |Hard% |numeric |
#' |pfxFA% |numeric |
#' |pfxFT% |numeric |
#' |pfxFC% |numeric |
#' |pfxFS% |numeric |
#' |pfxFO% |numeric |
#' |pfxSI% |numeric |
#' |pfxSL% |numeric |
#' |pfxCU% |numeric |
#' |pfxKC% |numeric |
#' |pfxCH% |numeric |
#' |pfxKN% |numeric |
#' |pfxvFA |numeric |
#' |pfxvFT |numeric |
#' |pfxvFC |numeric |
#' |pfxvFS |numeric |
#' |pfxvFO |numeric |
#' |pfxvSI |numeric |
#' |pfxvSL |numeric |
#' |pfxvCU |numeric |
#' |pfxvKC |numeric |
#' |pfxvCH |numeric |
#' |pfxvKN |numeric |
#' |pfxFA-X |numeric |
#' |pfxFT-X |numeric |
#' |pfxFC-X |numeric |
#' |pfxFS-X |numeric |
#' |pfxFO-X |numeric |
#' |pfxSI-X |numeric |
#' |pfxSL-X |numeric |
#' |pfxCU-X |numeric |
#' |pfxKC-X |numeric |
#' |pfxCH-X |numeric |
#' |pfxKN-X |numeric |
#' |pfxFA-Z |numeric |
#' |pfxFT-Z |numeric |
#' |pfxFC-Z |numeric |
#' |pfxFS-Z |numeric |
#' |pfxFO-Z |numeric |
#' |pfxSI-Z |numeric |
#' |pfxSL-Z |numeric |
#' |pfxCU-Z |numeric |
#' |pfxKC-Z |numeric |
#' |pfxCH-Z |numeric |
#' |pfxKN-Z |numeric |
#' |pfxwFA |numeric |
#' |pfxwFT |numeric |
#' |pfxwFC |numeric |
#' |pfxwFS |numeric |
#' |pfxwFO |numeric |
#' |pfxwSI |numeric |
#' |pfxwSL |numeric |
#' |pfxwCU |numeric |
#' |pfxwKC |numeric |
#' |pfxwCH |numeric |
#' |pfxwKN |numeric |
#' |pfxwFA/C |numeric |
#' |pfxwFT/C |numeric |
#' |pfxwFC/C |numeric |
#' |pfxwFS/C |numeric |
#' |pfxwFO/C |numeric |
#' |pfxwSI/C |numeric |
#' |pfxwSL/C |numeric |
#' |pfxwCU/C |numeric |
#' |pfxwKC/C |numeric |
#' |pfxwCH/C |numeric |
#' |pfxwKN/C |numeric |
#' |pfxO-Swing% |numeric |
#' |pfxZ-Swing% |numeric |
#' |pfxSwing% |numeric |
#' |pfxO-Contact% |numeric |
#' |pfxZ-Contact% |numeric |
#' |pfxContact% |numeric |
#' |pfxZone% |numeric |
#' |pfxPace |numeric |
#' |piCH% |numeric |
#' |piCS% |numeric |
#' |piCU% |numeric |
#' |piFA% |numeric |
#' |piFC% |numeric |
#' |piFS% |numeric |
#' |piKN% |numeric |
#' |piSI% |numeric |
#' |piSL% |numeric |
#' |piXX% |numeric |
#' |pivCH |numeric |
#' |pivCS |numeric |
#' |pivCU |numeric |
#' |pivFA |numeric |
#' |pivFC |numeric |
#' |pivFS |numeric |
#' |pivKN |numeric |
#' |pivSI |numeric |
#' |pivSL |numeric |
#' |pivXX |numeric |
#' |piCH-X |numeric |
#' |piCS-X |numeric |
#' |piCU-X |numeric |
#' |piFA-X |numeric |
#' |piFC-X |numeric |
#' |piFS-X |numeric |
#' |piKN-X |numeric |
#' |piSI-X |numeric |
#' |piSL-X |numeric |
#' |piXX-X |numeric |
#' |piCH-Z |numeric |
#' |piCS-Z |numeric |
#' |piCU-Z |numeric |
#' |piFA-Z |numeric |
#' |piFC-Z |numeric |
#' |piFS-Z |numeric |
#' |piKN-Z |numeric |
#' |piSI-Z |numeric |
#' |piSL-Z |numeric |
#' |piXX-Z |numeric |
#' |piwCH |numeric |
#' |piwCS |numeric |
#' |piwCU |numeric |
#' |piwFA |numeric |
#' |piwFC |numeric |
#' |piwFS |numeric |
#' |piwKN |numeric |
#' |piwSI |numeric |
#' |piwSL |numeric |
#' |piwXX |numeric |
#' |piwCH/C |numeric |
#' |piwCS/C |numeric |
#' |piwCU/C |numeric |
#' |piwFA/C |numeric |
#' |piwFC/C |numeric |
#' |piwFS/C |numeric |
#' |piwKN/C |numeric |
#' |piwSI/C |numeric |
#' |piwSL/C |numeric |
#' |piwXX/C |numeric |
#' |piO-Swing% |numeric |
#' |piZ-Swing% |numeric |
#' |piSwing% |numeric |
#' |piO-Contact% |numeric |
#' |piZ-Contact% |numeric |
#' |piContact% |numeric |
#' |piZone% |numeric |
#' |Events |numeric |
#' |EV |numeric |
#' |LA |numeric |
#' |Barrels |numeric |
#' |Barrel% |numeric |
#' |maxEV |numeric |
#' |HardHit |numeric |
#' |HardHit% |numeric |
#' |gamedate |character |
#' |dh |integer |
#' @importFrom rlang .data
#' @importFrom dplyr mutate select
#' @importFrom tidyr everything
#' @importFrom stringr str_extract
#' @importFrom jsonlite fromJSON
#' @import rvest
#' @export
#' @examples \donttest{
#' try(fg_batter_game_logs(playerid = 19755, year = 2023))
#' }
fg_batter_game_logs <- function(playerid, year) {
url <- paste0("https://www.fangraphs.com/api/players/game-log?playerid=",
playerid,
"&position=&type=0&gds=&gde=&z=1703085978&season=",
year)
tryCatch(
expr = {
res <- httr::RETRY("GET", url)
resp <- res %>%
httr::content(as = "text", encoding = "UTF-8")
payload <- jsonlite::fromJSON(resp)[['mlb']] %>%
as.data.frame()
payload <- payload[-1,]
payload <- payload %>%
dplyr::mutate(
Date = stringr::str_extract(.data$Date,"(?<=>).+(?=<)"))
payload <- payload %>%
dplyr::select("PlayerName", "playerid", tidyr::everything())
payload <- payload %>%
make_baseballr_data("MLB Batter Game Logs data from FanGraphs.com",Sys.time())
},
error = function(e) {
message(glue::glue("{Sys.time()}: Invalid arguments or no batter game logs data available!"))
},
finally = {
}
)
return(payload)
}
#' @rdname batter_game_logs_fg
#' @title **(legacy) Scrape Batter Game Logs from FanGraphs**
#' @inheritParams fg_batter_game_logs
#' @return A data frame of batter game logs.
#' @keywords legacy
#' @export
batter_game_logs_fg <- fg_batter_game_logs
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.