Skip to contents

A "Series" begins on a 1st and 10 and each team attempts to either earn a new 1st down (on offense) or prevent the offense from converting a new 1st down (on defense). Series conversion rate represents how many series have been either converted to a new 1st down or ended in a touchdown. This function computes series conversion rates on offense and defense from nflverse play-by-play data along with other series results. The function automatically removes series that ended in a QB kneel down.

Usage

calculate_series_conversion_rates(pbp, weekly = FALSE)

Arguments

pbp

Play-by-play data as returned by load_pbp(), build_nflfastR_pbp(), or fast_scraper().

weekly

If TRUE, returns week-by-week stats, otherwise, season-by-season stats in argument pbp.

Value

A data frame of series information including the following columns:

season

The NFL season

team

NFL team abbreviation

week

Week if weekly is TRUE

off_n

The number of series the offense played (excludes QB kneel downs, kickoffs, extra point/two point conversion attempts, non-plays, and plays that do not list a "posteam")

off_scr

The rate at which a series ended in either new 1st down or touchdown while the offense was on the field

off_scr_1st

The rate at which an offense earned a 1st down or scored a touchdown on 1st down

off_scr_2nd

The rate at which an offense earned a 1st down or scored a touchdown on 2nd down

off_scr_3rd

The rate at which an offense earned a 1st down or scored a touchdown on 3rd down

off_scr_4th

The rate at which an offense earned a 1st down or scored a touchdown on 4th down

off_1st

The rate of series that ended in a new 1st down while the offense was on the field (does not include offensive touchdown)

off_td

The rate of series that ended in an offensive touchdown while the offense was on the field

off_fg

The rate of series that ended in a field goal attempt while the offense was on the field

off_punt

The rate of series that ended in a punt while the offense was on the field

off_to

The rate of series that ended in a turnover (including on downs), in an opponent score, or at the end of half (or game) while the offense was on the field

def_n

The number of series the defense played (excludes QB kneel downs, kickoffs, extra point/two point conversion attempts, non-plays, and plays that do not list a "posteam")

def_scr

The rate at which a series ended in either new 1st down or touchdown while the defense was on the field

def_scr_1st

The rate at which a defense allowed a 1st down or touchdown on 1st down

def_scr_2nd

The rate at which a defense allowed a 1st down or touchdown on 2nd down

def_scr_3rd

The rate at which a defense allowed a 1st down or touchdown on 3rd down

def_scr_4th

The rate at which a defense allowed a 1st down or touchdown on 4th down

def_1st

The rate of series that ended in a new 1st down while the defense was on the field (does not include offensive touchdown)

def_td

The rate of series that ended in an offensive touchdown while the defense was on the field

def_fg

The rate of series that ended in a field goal attempt while the defense was on the field

def_punt

The rate of series that ended in a punt while the defense was on the field

def_to

The rate of series that ended in a turnover (including on downs), in an opponent score, or at the end of half (or game) while the defense was on the field

Examples

# \donttest{
try({# to avoid CRAN test problems
  pbp <- nflfastR::load_pbp(2021)

  weekly <- calculate_series_conversion_rates(pbp, weekly = TRUE)
  dplyr::glimpse(weekly)

  overall <- calculate_series_conversion_rates(pbp, weekly = FALSE)
  dplyr::glimpse(overall)
})
#> Rows: 570
#> Columns: 25
#> $ season      <int> 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021…
#> $ team        <chr> "ARI", "ARI", "ARI", "ARI", "ARI", "ARI", "ARI", "ARI", "A…
#> $ week        <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 17, 18,…
#> $ off_n       <int> 28, 29, 31, 32, 27, 29, 31, 27, 28, 21, 36, 20, 31, 31, 27…
#> $ off_scr     <dbl> 0.7857143, 0.7241379, 0.7419355, 0.8437500, 0.7407407, 0.8…
#> $ off_scr_1st <dbl> 0.1428571, 0.2413793, 0.1935484, 0.1250000, 0.1851852, 0.1…
#> $ off_scr_2nd <dbl> 0.3571429, 0.3448276, 0.4516129, 0.4375000, 0.4444444, 0.3…
#> $ off_scr_3rd <dbl> 0.28571429, 0.10344828, 0.03225806, 0.28125000, 0.11111111…
#> $ off_scr_4th <dbl> 0.00000000, 0.03448276, 0.06451613, 0.00000000, 0.00000000…
#> $ off_1st     <dbl> 0.6071429, 0.5862069, 0.6451613, 0.7187500, 0.6666667, 0.6…
#> $ off_td      <dbl> 0.17857143, 0.13793103, 0.09677419, 0.12500000, 0.07407407…
#> $ off_fg      <dbl> 0.07142857, 0.06896552, 0.03225806, 0.09375000, 0.07407407…
#> $ off_punt    <dbl> 0.10714286, 0.13793103, 0.16129032, 0.06250000, 0.14814815…
#> $ off_to      <dbl> 0.03571429, 0.06896552, 0.06451613, 0.00000000, 0.03703704…
#> $ def_n       <int> 26, 30, 30, 31, 25, 23, 19, 30, 30, 33, 24, 32, 24, 27, 27…
#> $ def_scr     <dbl> 0.6538462, 0.7333333, 0.6666667, 0.7741935, 0.6800000, 0.6…
#> $ def_scr_1st <dbl> 0.1923077, 0.2666667, 0.2000000, 0.2580645, 0.2400000, 0.2…
#> $ def_scr_2nd <dbl> 0.2307692, 0.3666667, 0.3666667, 0.3225806, 0.2800000, 0.2…
#> $ def_scr_3rd <dbl> 0.19230769, 0.06666667, 0.06666667, 0.19354839, 0.12000000…
#> $ def_scr_4th <dbl> 0.03846154, 0.03333333, 0.03333333, 0.00000000, 0.04000000…
#> $ def_1st     <dbl> 0.5769231, 0.6333333, 0.6000000, 0.7096774, 0.6400000, 0.5…
#> $ def_td      <dbl> 0.07692308, 0.10000000, 0.06666667, 0.06451613, 0.04000000…
#> $ def_fg      <dbl> 0.03846154, 0.10000000, 0.00000000, 0.09677419, 0.04000000…
#> $ def_punt    <dbl> 0.11538462, 0.16666667, 0.20000000, 0.03225806, 0.08000000…
#> $ def_to      <dbl> 0.19230769, 0.00000000, 0.13333333, 0.09677419, 0.20000000…
#> Rows: 32
#> Columns: 24
#> $ season      <int> 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021, 2021…
#> $ team        <chr> "ARI", "ATL", "BAL", "BUF", "CAR", "CHI", "CIN", "CLE", "D…
#> $ off_n       <int> 510, 439, 538, 568, 474, 471, 568, 463, 540, 449, 463, 504…
#> $ off_scr     <dbl> 0.7431373, 0.6856492, 0.7267658, 0.7834507, 0.6666667, 0.7…
#> $ off_scr_1st <dbl> 0.1843137, 0.2050114, 0.2416357, 0.2605634, 0.2025316, 0.2…
#> $ off_scr_2nd <dbl> 0.3039216, 0.2391800, 0.2918216, 0.2799296, 0.2468354, 0.2…
#> $ off_scr_3rd <dbl> 0.2176471, 0.2118451, 0.1561338, 0.2147887, 0.1856540, 0.1…
#> $ off_scr_4th <dbl> 0.03725490, 0.02961276, 0.03717472, 0.02816901, 0.03164557…
#> $ off_1st     <dbl> 0.6431373, 0.6150342, 0.6524164, 0.6637324, 0.6012658, 0.6…
#> $ off_td      <dbl> 0.10000000, 0.07061503, 0.07434944, 0.11971831, 0.06540084…
#> $ off_fg      <dbl> 0.07254902, 0.06150342, 0.06877323, 0.05633803, 0.06118143…
#> $ off_punt    <dbl> 0.11176471, 0.14578588, 0.13197026, 0.09859155, 0.15611814…
#> $ off_to      <dbl> 0.07254902, 0.10706150, 0.07249071, 0.06161972, 0.11603376…
#> $ def_n       <int> 483, 490, 476, 488, 451, 439, 592, 451, 509, 434, 484, 477…
#> $ def_scr     <dbl> 0.7142857, 0.7734694, 0.7142857, 0.6762295, 0.6851441, 0.7…
#> $ def_scr_1st <dbl> 0.2380952, 0.2183673, 0.2647059, 0.1885246, 0.2283814, 0.2…
#> $ def_scr_2nd <dbl> 0.2525880, 0.2979592, 0.2605042, 0.2438525, 0.2372506, 0.2…
#> $ def_scr_3rd <dbl> 0.1904762, 0.2306122, 0.1638655, 0.1967213, 0.1929047, 0.2…
#> $ def_scr_4th <dbl> 0.03312629, 0.02653061, 0.02521008, 0.04713115, 0.02660754…
#> $ def_1st     <dbl> 0.6252588, 0.6714286, 0.6218487, 0.5983607, 0.5920177, 0.6…
#> $ def_td      <dbl> 0.08902692, 0.10204082, 0.09243697, 0.07786885, 0.09312639…
#> $ def_fg      <dbl> 0.06211180, 0.05714286, 0.05672269, 0.05737705, 0.08203991…
#> $ def_punt    <dbl> 0.13043478, 0.10816327, 0.17436975, 0.16188525, 0.16407982…
#> $ def_to      <dbl> 0.09316770, 0.06122449, 0.05462185, 0.10450820, 0.06873614…
# }