build_nflfastR_pbp
is a convenient wrapper around 6 nflfastR functions:
Please see either the documentation of each function or the nflfastR Field Descriptions website to learn about the output.
Usage
build_nflfastR_pbp(
game_ids,
dir = getOption("nflfastR.raw_directory", default = NULL),
...,
decode = TRUE,
rules = TRUE
)
Arguments
- game_ids
Vector of character ids or a data frame including the variable
game_id
(see details for further information).- dir
Path to local directory (defaults to option "nflfastR.raw_directory") where nflfastR searches for raw game play-by-play data. See
save_raw_pbp()
for additional information.- ...
Additional arguments passed to the scraping functions (for internal use)
- decode
If
TRUE
, the functiondecode_player_ids()
will be executed.- rules
If
FALSE
, printing of the header and footer in the console output will be suppressed.
Value
An nflfastR play-by-play data frame like it can be loaded from https://github.com/nflverse/nflverse-data.
Details
To load valid game_ids please use the package function fast_scraper_schedules()
.
See also
For information on parallel processing and progress updates please see nflfastR.
Examples
# \donttest{
# Build nflfastR pbp for the 2018 and 2019 Super Bowls
try({# to avoid CRAN test problems
build_nflfastR_pbp(c("2018_21_NE_LA", "2019_21_SF_KC"))
})
#> ── Build nflfastR Play-by-Play Data ───────────── nflfastR version 5.0.0.9005 ──
#> • 15:07:00 | Start download of 2 games...
#> ℹ It is recommended to use parallel processing when trying to load multiple games.Please consider running `future::plan("multisession")`! Will go on sequentially...
#> ✔ 15:07:03 | Download finished. Adding variables...
#> ✔ 15:07:04 | added game variables
#> ✔ 15:07:05 | added nflscrapR variables
#> [15:07:05] WARNING: src/learner.cc:553:
#> If you are loading a serialized model (like pickle in Python, RDS in R) generated by
#> older XGBoost, please export the model by calling `Booster.save_model` from that version
#> first, then load it back in current version. See:
#>
#> https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
#>
#> for more details about differences between saving model and serializing.
#>
#> ✔ 15:07:05 | added ep variables
#> ✔ 15:07:05 | added air_yac_ep variables
#> [15:07:05] WARNING: src/learner.cc:553:
#> If you are loading a serialized model (like pickle in Python, RDS in R) generated by
#> older XGBoost, please export the model by calling `Booster.save_model` from that version
#> first, then load it back in current version. See:
#>
#> https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
#>
#> for more details about differences between saving model and serializing.
#>
#> [15:07:05] WARNING: src/learner.cc:553:
#> If you are loading a serialized model (like pickle in Python, RDS in R) generated by
#> older XGBoost, please export the model by calling `Booster.save_model` from that version
#> first, then load it back in current version. See:
#>
#> https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
#>
#> for more details about differences between saving model and serializing.
#>
#> ✔ 15:07:05 | added wp variables
#> ✔ 15:07:05 | added air_yac_wp variables
#> [15:07:05] WARNING: src/learner.cc:553:
#> If you are loading a serialized model (like pickle in Python, RDS in R) generated by
#> older XGBoost, please export the model by calling `Booster.save_model` from that version
#> first, then load it back in current version. See:
#>
#> https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
#>
#> for more details about differences between saving model and serializing.
#>
#> ✔ 15:07:05 | added cp and cpoe
#> ✔ 15:07:06 | added fixed drive variables
#> ✔ 15:07:06 | added series variables
#> • 15:07:06 | Cleaning up play-by-play...
#> ✔ 15:07:06 | Cleaning completed
#> ✔ 15:07:06 | added qb_epa
#> • 15:07:06 | Computing xyac...
#> [15:07:07] WARNING: src/learner.cc:553:
#> If you are loading a serialized model (like pickle in Python, RDS in R) generated by
#> older XGBoost, please export the model by calling `Booster.save_model` from that version
#> first, then load it back in current version. See:
#>
#> https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
#>
#> for more details about differences between saving model and serializing.
#>
#> ✔ 15:07:08 | added xyac variables
#> • 15:07:08 | Computing xpass...
#> [15:07:08] WARNING: src/learner.cc:553:
#> If you are loading a serialized model (like pickle in Python, RDS in R) generated by
#> older XGBoost, please export the model by calling `Booster.save_model` from that version
#> first, then load it back in current version. See:
#>
#> https://xgboost.readthedocs.io/en/latest/tutorials/saving_model.html
#>
#> for more details about differences between saving model and serializing.
#>
#> ✔ 15:07:08 | added xpass and pass_oe
#> • 15:07:08 | Decode player ids...
#> ✔ 15:07:09 | Decoding of player ids completed
#> ── DONE ────────────────────────────────────────────────────────────────────────
#> ── nflverse play by play ───────────────────────────────────────────────────────
#> ℹ Data updated: 2025-03-31 15:07:09 UTC
#> # A tibble: 349 × 372
#> play_id game_id old_game_id home_team away_team season_type week posteam
#> <dbl> <chr> <chr> <chr> <chr> <chr> <int> <chr>
#> 1 1 2018_21_NE… 2019020300 LA NE POST 21 NA
#> 2 38 2018_21_NE… 2019020300 LA NE POST 21 NE
#> 3 67 2018_21_NE… 2019020300 LA NE POST 21 NE
#> 4 89 2018_21_NE… 2019020300 LA NE POST 21 NE
#> 5 111 2018_21_NE… 2019020300 LA NE POST 21 NE
#> 6 133 2018_21_NE… 2019020300 LA NE POST 21 NE
#> 7 155 2018_21_NE… 2019020300 LA NE POST 21 NE
#> 8 182 2018_21_NE… 2019020300 LA NE POST 21 LA
#> 9 204 2018_21_NE… 2019020300 LA NE POST 21 LA
#> 10 226 2018_21_NE… 2019020300 LA NE POST 21 LA
#> # ℹ 339 more rows
#> # ℹ 364 more variables: posteam_type <chr>, defteam <chr>, side_of_field <chr>,
#> # yardline_100 <dbl>, game_date <chr>, quarter_seconds_remaining <dbl>,
#> # half_seconds_remaining <dbl>, game_seconds_remaining <dbl>,
#> # game_half <chr>, quarter_end <dbl>, drive <dbl>, sp <dbl>, qtr <dbl>,
#> # down <dbl>, goal_to_go <int>, time <chr>, yrdln <chr>, ydstogo <dbl>,
#> # ydsnet <dbl>, desc <chr>, play_type <chr>, yards_gained <dbl>, …
# It is also possible to directly use the
# output of `fast_scraper_schedules` as input
try({# to avoid CRAN test problems
library(dplyr, warn.conflicts = FALSE)
fast_scraper_schedules(2020) |>
slice_tail(n = 3) |>
build_nflfastR_pbp()
})
#> ── Build nflfastR Play-by-Play Data ───────────── nflfastR version 5.0.0.9005 ──
#> • 15:07:09 | Start download of 3 games...
#> ℹ It is recommended to use parallel processing when trying to load multiple games.Please consider running `future::plan("multisession")`! Will go on sequentially...
#> ✔ 15:07:13 | Download finished. Adding variables...
#> ✔ 15:07:13 | added game variables
#> ✔ 15:07:13 | added nflscrapR variables
#> ✔ 15:07:13 | added ep variables
#> ✔ 15:07:13 | added air_yac_ep variables
#> ✔ 15:07:14 | added wp variables
#> ✔ 15:07:14 | added air_yac_wp variables
#> ✔ 15:07:14 | added cp and cpoe
#> ✔ 15:07:14 | added fixed drive variables
#> ✔ 15:07:14 | added series variables
#> • 15:07:14 | Cleaning up play-by-play...
#> ✔ 15:07:14 | Cleaning completed
#> ✔ 15:07:14 | added qb_epa
#> • 15:07:14 | Computing xyac...
#> ✔ 15:07:15 | added xyac variables
#> • 15:07:15 | Computing xpass...
#> ✔ 15:07:15 | added xpass and pass_oe
#> • 15:07:15 | Decode player ids...
#> ✔ 15:07:15 | Decoding of player ids completed
#> ── DONE ────────────────────────────────────────────────────────────────────────
#> ── nflverse play by play ───────────────────────────────────────────────────────
#> ℹ Data updated: 2025-03-31 15:07:15 UTC
#> # A tibble: 539 × 372
#> play_id game_id old_game_id home_team away_team season_type week posteam
#> <dbl> <chr> <chr> <chr> <chr> <chr> <int> <chr>
#> 1 1 2020_20_BU… 2021012401 KC BUF POST 20 NA
#> 2 42 2020_20_BU… 2021012401 KC BUF POST 20 BUF
#> 3 57 2020_20_BU… 2021012401 KC BUF POST 20 BUF
#> 4 78 2020_20_BU… 2021012401 KC BUF POST 20 BUF
#> 5 102 2020_20_BU… 2021012401 KC BUF POST 20 BUF
#> 6 123 2020_20_BU… 2021012401 KC BUF POST 20 BUF
#> 7 145 2020_20_BU… 2021012401 KC BUF POST 20 BUF
#> 8 174 2020_20_BU… 2021012401 KC BUF POST 20 BUF
#> 9 207 2020_20_BU… 2021012401 KC BUF POST 20 BUF
#> 10 236 2020_20_BU… 2021012401 KC BUF POST 20 BUF
#> # ℹ 529 more rows
#> # ℹ 364 more variables: posteam_type <chr>, defteam <chr>, side_of_field <chr>,
#> # yardline_100 <dbl>, game_date <chr>, quarter_seconds_remaining <dbl>,
#> # half_seconds_remaining <dbl>, game_seconds_remaining <dbl>,
#> # game_half <chr>, quarter_end <dbl>, drive <dbl>, sp <dbl>, qtr <dbl>,
#> # down <dbl>, goal_to_go <int>, time <chr>, yrdln <chr>, ydstogo <dbl>,
#> # ydsnet <dbl>, desc <chr>, play_type <chr>, yards_gained <dbl>, …
# }