The NCAA has a lot of sports stats available at https://stats.ncaa.org.
This package focuses on volleyball, though some of the functions can be
used for other sports (e.g., get_teams()
). The sport code
for selecting women’s volleyball is “WVB” and men’s is “MVB”. Once you
pick one of those, you can access season, match, and play-by-play stats
for players and teams.
Finding teams
The NCAA uses a unique team ID for each women's and men's volleyball
team and each season. So first you will need to get that ID with the
find_team_id()
. I'll use Nebraska to illustrate the
functions in {ncaavolleyballr}
.
However, before we find the team ID, we first have to know the exact
team name that the NCAA uses to reference each team. Is Nebraska’s team
name Nebraska, Neb., University of Nebraska-Lincoln, UNL, or something
else? We can use find_team_name()
to get a vector of teams
that match a pattern.
find_team_name("Neb")
#> [1] "Neb. Wesleyan" "Neb.-Kearney" "Nebraska"
Looks like it’s “Nebraska”. So now we can pass that to
find_team_id()
along with the year that we’re interested
in. This function queries two data sets that ship with this package:
wvb_teams
and mvb_teams
. These two data sets
are simply the output of the get_teams()
function being
applied to sports “WVB” and “MVB” respectively. The
get_teams()
function can be applied to other sports to get
the list of all of their team IDs. But since we’ve already done that for
men’s and women’s volleyball, you won’t need to use
get_teams()
.
OK, let’s find Nebraska’s team ID for 2024.
find_team_id("Nebraska", 2024)
#> [1] "585290"
We’ll need this team ID to access all of the team’s statistics. You can either assign the output to an object or just add it to the top of your pipeline.
You can also pass vectors of team names and years to find team IDs for multiple teams and years.
find_team_id("Nebraska", 2020:2024)
#> [1] "504517" "523117" "538902" "558878" "585290"
find_team_id(c("Nebraska", "Wisconsin"), 2024)
#> [1] "585290" "585357"
find_team_id(c("Nebraska", "Wisconsin"), 2020:2024)
#> [1] "504517" "504318" "523117" "522809" "538902" "538704" "558878" "559025" "585290" "585357"
Note these are processed per year, so the last example are the teams ID’s for Nebraska and Wisconsin in 2020 then 2021, etc.
Season stats
Now that we have the team ID, we can use it to access season summary statistics for a particular team and year (e.g., Nebraska 2024).
Team season information
Before we get to stats, we can extract information about a team’s
season with team_season_info()
, The NCAA’s main page for a
team and year includes a tab called “Schedule/Results”. The
team_season_stats()
function extracts information about the
team’s venue, coach, and records, as well as the table of the schedule
and results.
(neb2024team <- find_team_id("Nebraska", 2024) |>
team_season_info())
#> $team_info
#> team_id team_name conference_id conference div yr season
#> 1466 585290 Nebraska 827 Big Ten 1 2024 2024-2025
#>
#> $arena
#> Arena name Capacity Year built
#> "Bob Devaney Sports Center" "7,907" "1975"
#>
#> $coach
#> Name Alma mater Seasons Record
#> "John Cook" "San Diego - 1979" "32" "883-176"
#>
#> $record
#> Overall record Overall streak Conference record Conference streak Home record
#> "33-3 (0.917)" "Streak: L1" "19-1 (0.950)" "Streak: L1" "22-0 (1.000)"
#> Home streak Road record Road streak Neutral record Neutral streak
#> "Streak: W45" "10-2 (0.833)" "Streak: W1" "1-1 (0.500)" "Streak: L1"
#> Non-division record Non-division streak
#> "0-0 (0.000)" "Streak: 0"
#>
#> $schedule
#> # A tibble: 36 × 4
#> Date Opponent Result Attendance
#> <chr> <chr> <chr> <chr>
#> 1 08/27/2024 Kentucky @Louisville, KY W 3-1 9,280
#> 2 08/30/2024 A&M-Corpus Christi W 3-0 8,956
#> 3 08/31/2024 TCU W 3-1 8,695
#> 4 09/03/2024 @ SMU L 0-3 6,773
#> 5 09/05/2024 The Citadel W 3-0 8,607
#> 6 09/07/2024 Montana St. W 3-0 8,456
#> 7 09/10/2024 Creighton W 3-2 8,924
#> 8 09/13/2024 Arizona St. W 3-0 8,772
#> 9 09/14/2024 Wichita St. W 3-0 8,541
#> 10 09/18/2024 Stanford W 3-0 8,952
#> # ℹ 26 more rows
This returns a list, so you can subset specific components with
$
. For instance, if we wanted to calculate average
attendance per game:
neb2024team$schedule |>
dplyr::pull(Attendance) |>
sub(",", "", x = _) |>
as.numeric() |>
mean()
#> [1] 8765.333
Wow, Nebraska volleyball attracted more attendees per game than the 2021 Oakland Athletics professional baseball team!
Team season stats
The NCAA makes team season summary stats available since. We have included the conference starting with 2020 (conference data for previous seasons is not currently available).
team_season_stats(team = "Nebraska")
#> Year Team Conference S Kills Errors Total Attacks Hit Pct Assists Aces SErr Digs RetAtt
#> 1 2001-02 Nebraska <NA> 108 1790 532 4130 0.305 1575 162 NA 1833 NA
#> 2 2002-03 Nebraska <NA> 103 1747 481 3927 0.322 1532 169 NA 1642 NA
#> 3 2003-04 Nebraska <NA> 117 1915 720 4806 0.249 1748 225 NA 1941 NA
#> 4 2004-05 Nebraska <NA> 106 1823 610 4322 0.281 1657 166 NA 1846 NA
#> 5 2005-06 Nebraska <NA> 116 1986 581 4367 0.322 1823 162 NA 1731 NA
#> 6 2006-07 Nebraska <NA> 115 2001 637 4605 0.296 1863 175 NA 1942 NA
#> 7 2007-08 Nebraska <NA> 103 1829 506 4051 0.327 1691 187 NA 1687 NA
#> 8 2008-09 Nebraska <NA> 118 1714 590 4166 0.270 1578 154 NA 1734 NA
#> 9 2009-10 Nebraska <NA> 115 1685 618 4160 0.256 1568 130 NA 1837 NA
#> 10 2010-11 Nebraska <NA> 108 1609 528 3812 0.284 1501 127 148 1698 NA
#> 11 2011-12 Nebraska <NA> 113 1532 504 3866 0.266 1426 91 161 1696 NA
#> 12 2012-13 Nebraska <NA> 123 1728 509 4171 0.292 1617 139 217 1767 NA
#> 13 2013-14 Nebraska <NA> 119 1710 593 4132 0.270 1597 115 241 1714 NA
#> 14 2014-15 Nebraska <NA> 118 1564 599 4089 0.236 1476 118 220 1699 NA
#> 15 2015-16 Nebraska <NA> 129 1873 589 4690 0.274 1730 140 232 2049 NA
#> 16 2016-17 Nebraska <NA> 117 1688 533 4026 0.287 1558 142 215 1785 NA
#> 17 2017-18 Nebraska <NA> 125 1777 575 4267 0.282 1632 184 236 1904 NA
#> 18 2018-19 Nebraska <NA> 133 1772 582 4491 0.265 1651 215 285 2100 NA
#> 19 2019-20 Nebraska <NA> 119 1641 567 4029 0.267 1526 125 238 1802 2087
#> 20 2020-21 Nebraska <NA> 66 925 323 2229 0.270 847 104 131 957 1155
#> 21 2021-22 Nebraska <NA> 121 1677 667 4551 0.222 1548 181 241 2054 2164
#> 22 2022-23 Nebraska <NA> 109 1461 519 3866 0.244 1331 128 261 1721 1824
#> 23 2023-24 Nebraska <NA> 121 1676 597 3959 0.273 1553 143 309 1666 2018
#> 24 2024-25 Nebraska <NA> 122 1721 551 4114 0.284 1596 155 193 1856 1920
#> RErr Block Solos Block Assists BErr PTS BHE Trpl Dbl
#> 1 NA 116 670 NA NA NA 1
#> 2 NA 81 626 NA NA NA 1
#> 3 NA 80 582 NA NA NA 1
#> 4 NA 89 675 NA NA NA 1
#> 5 NA 66 823 NA NA NA 1
#> 6 NA 94 531 NA NA NA 1
#> 7 NA 90 397 NA NA NA 1
#> 8 NA 78 451 NA NA NA 1
#> 9 NA 75 398 NA NA NA 1
#> 10 77 73 510 79 2064.0 11 NA
#> 11 95 52 484 77 1917.0 18 NA
#> 12 94 79 477 68 2184.5 15 NA
#> 13 82 69 538 96 2163.0 20 NA
#> 14 93 72 543 64 2025.5 23 NA
#> 15 79 55 605 67 2370.5 24 NA
#> 16 69 57 546 59 2160.0 19 NA
#> 17 80 61 479 68 2261.5 22 NA
#> 18 124 56 601 99 2343.5 14 NA
#> 19 126 50 470 66 1940.0 11 10
#> 20 71 21 269 40 1184.5 12 19
#> 21 105 38 530 54 2161.0 8 34
#> 22 77 33 537 47 1890.5 25 32
#> 23 104 39 574 43 2145.0 15 35
#> 24 81 51 581 50 2217.5 1 36
By default, the teams’s stats are returned. To return the opposing
teams stats, set opponents = TRUE
.
team_season_stats(team = "Nebraska", opponent = TRUE)
#> Year Team Conference S Kills Errors Total Attacks Hit Pct Assists Aces SErr Digs RetAtt
#> 1 2010-11 Opponent <NA> 108 1235 679 3833 0.145 1174 77 174 1480 NA
#> 2 2011-12 Opponent <NA> 113 1305 724 3998 0.145 1234 95 195 1599 NA
#> 3 2012-13 Opponent <NA> 123 1543 697 4316 0.196 1452 94 209 1688 NA
#> 4 2013-14 Opponent <NA> 119 1438 684 4119 0.183 1371 82 226 1592 NA
#> 5 2014-15 Opponent <NA> 118 1507 746 4246 0.179 1405 93 226 1645 NA
#> 6 2015-16 Opponent <NA> 129 1577 760 4756 0.172 1494 79 237 1916 NA
#> 7 2016-17 Opponent <NA> 117 1309 708 4102 4.587 1243 69 236 1573 NA
#> 8 2017-18 Opponent <NA> 125 1368 701 4335 0.154 1276 80 278 1634 NA
#> 9 2018-19 Opponent <NA> 133 1460 780 4719 0.144 1376 124 296 1905 NA
#> 10 2019-20 Opponent <NA> 119 1344 703 4205 0.152 1243 126 252 1581 2532
#> 11 2020-21 Opponent <NA> 66 739 365 2226 0.168 679 71 160 831 1424
#> 12 2021-22 Opponent <NA> 121 1349 693 4418 0.148 1269 105 267 1886 2595
#> 13 2022-23 Opponent <NA> 109 1198 689 3988 0.128 1114 77 297 1575 2337
#> 14 2023-24 Opponent <NA> 121 1264 713 4009 0.137 1188 104 325 1402 2552
#> 15 2024-25 Opponent <NA> 122 1376 749 4377 0.143 1321 81 342 1539 2748
#> RErr Block Solos Block Assists BErr PTS BHE Trpl Dbl
#> 1 127 33 322 59 1506.0 23 NA
#> 2 91 28 294 59 1575.0 29 NA
#> 3 139 50 362 69 1868.0 35 NA
#> 4 115 46 398 70 1765.0 22 NA
#> 5 118 40 417 74 1848.5 39 NA
#> 6 140 53 387 89 1902.5 40 NA
#> 7 142 40 355 59 1595.5 22 NA
#> 8 184 60 357 66 1686.5 25 NA
#> 9 215 39 388 59 1817.0 41 NA
#> 10 125 45 341 66 1595.5 34 10
#> 11 104 16 236 26 944.0 6 19
#> 12 181 49 503 52 1754.5 16 34
#> 13 128 29 370 51 1489.0 24 32
#> 14 143 42 430 58 1625.0 17 35
#> 15 155 34 375 49 1678.5 1 36
Here’s a table describing the different team statistics returned.
data.frame(Stat = colnames(team_season_stats(team = "Nebraska"))[4:20],
Description = c("Sets played", "Kills", "Attack errors", "Attacks",
"Hit percentage [(kills-errors)/attacks]", "Assists",
"Ace serves", "Service errors", "Digs",
"Reception attempts", "Reception errors",
"Solo blocks", "Block assists", "Block errors",
"Points", "Ball handling errors", "Triple doubles"))
#> Stat Description
#> 1 S Sets played
#> 2 Kills Kills
#> 3 Errors Attack errors
#> 4 Total Attacks Attacks
#> 5 Hit Pct Hit percentage [(kills-errors)/attacks]
#> 6 Assists Assists
#> 7 Aces Ace serves
#> 8 SErr Service errors
#> 9 Digs Digs
#> 10 RetAtt Reception attempts
#> 11 RErr Reception errors
#> 12 Block Solos Solo blocks
#> 13 Block Assists Block assists
#> 14 BErr Block errors
#> 15 PTS Points
#> 16 BHE Ball handling errors
#> 17 Trpl Dbl Triple doubles
Player season stats
The NCAA’s main page for a team includes a tab called “Team
Statistics” (e.g., Nebraska
2024). The player_season_stats()
function extracts the
table of player summary statistics for a particular season, as well as
team and opponent statistics (though these can be omitted).
find_team_id("Nebraska", 2024) |>
player_season_stats()
#> # A tibble: 16 × 29
#> Season Team Conference Number Player Yr Pos Ht Hometown `High School` GP GS S
#> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
#> 1 2024-2025 Nebr… Big Ten 2 Berge… So S 6-1 Sioux F… O'Gorman 36 36 122
#> 2 2024-2025 Nebr… Big Ten 5 Rebek… Jr MB 6-4 Lincoln… Waverly 35 34 109
#> 3 2024-2025 Nebr… Big Ten 6 Laney… So L/DS 5-3 Raleigh… Leesville Ro… 36 0 121
#> 4 2024-2025 Nebr… Big Ten 7 Maisi… Jr L/DS 5-6 Firth, … Norris 9 0 13
#> 5 2024-2025 Nebr… Big Ten 8 Lexi … Sr L/DS 5-5 Sterlin… Sterling 36 0 122
#> 6 2024-2025 Nebr… Big Ten 9 Kenne… Sr S 6-0 Eagan, … Eagan 35 0 112
#> 7 2024-2025 Nebr… Big Ten 10 Olivi… Fr L/DS 5-6 Benning… Bennington 36 4 122
#> 8 2024-2025 Nebr… Big Ten 11 Leyla… Sr MB 6-4 San Die… La Jolla 13 4 23
#> 9 2024-2025 Nebr… Big Ten 12 Taylo… Sr OH 6-5 Plainfi… Plainfield C… 33 20 88
#> 10 2024-2025 Nebr… Big Ten 13 Merri… Sr OH 6-4 Gardend… Gardendale 36 36 122
#> 11 2024-2025 Nebr… Big Ten 15 Andi … So MB 6-3 Brighto… Brighton 34 34 114
#> 12 2024-2025 Nebr… Big Ten 22 Linds… Sr OH 6-4 Papilli… Skutt Cathol… 24 12 50
#> 13 2024-2025 Nebr… Big Ten 27 Harpe… So OH 6-2 Ann Arb… Skyline 36 36 121
#> 14 2024-2025 Nebr… Big Ten NA TEAM - - - <NA> <NA> NA NA NA
#> 15 2024-2025 Nebr… Big Ten NA Totals - - - <NA> <NA> NA NA 122
#> 16 2024-2025 Nebr… Big Ten NA Oppon… - - - <NA> <NA> NA NA 122
#> # ℹ 16 more variables: Kills <dbl>, Errors <dbl>, `Total Attacks` <dbl>, `Hit Pct` <dbl>,
#> # Assists <dbl>, Aces <dbl>, SErr <dbl>, Digs <dbl>, RetAtt <dbl>, RErr <dbl>, `Block Solos` <dbl>,
#> # `Block Assists` <dbl>, BErr <dbl>, PTS <dbl>, BHE <dbl>, `Trpl Dbl` <dbl>
This returns all players, along with TEAM, opponent, and overall team
summaries. To only include player stats, set
team_stats = FALSE
.
find_team_id("Nebraska", 2024) |>
player_season_stats(team_stats = FALSE)
#> # A tibble: 13 × 29
#> Season Team Conference Number Player Yr Pos Ht Hometown `High School` GP GS S
#> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
#> 1 2024-2025 Nebr… Big Ten 2 Berge… So S 6-1 Sioux F… O'Gorman 36 36 122
#> 2 2024-2025 Nebr… Big Ten 5 Rebek… Jr MB 6-4 Lincoln… Waverly 35 34 109
#> 3 2024-2025 Nebr… Big Ten 6 Laney… So L/DS 5-3 Raleigh… Leesville Ro… 36 0 121
#> 4 2024-2025 Nebr… Big Ten 7 Maisi… Jr L/DS 5-6 Firth, … Norris 9 0 13
#> 5 2024-2025 Nebr… Big Ten 8 Lexi … Sr L/DS 5-5 Sterlin… Sterling 36 0 122
#> 6 2024-2025 Nebr… Big Ten 9 Kenne… Sr S 6-0 Eagan, … Eagan 35 0 112
#> 7 2024-2025 Nebr… Big Ten 10 Olivi… Fr L/DS 5-6 Benning… Bennington 36 4 122
#> 8 2024-2025 Nebr… Big Ten 11 Leyla… Sr MB 6-4 San Die… La Jolla 13 4 23
#> 9 2024-2025 Nebr… Big Ten 12 Taylo… Sr OH 6-5 Plainfi… Plainfield C… 33 20 88
#> 10 2024-2025 Nebr… Big Ten 13 Merri… Sr OH 6-4 Gardend… Gardendale 36 36 122
#> 11 2024-2025 Nebr… Big Ten 15 Andi … So MB 6-3 Brighto… Brighton 34 34 114
#> 12 2024-2025 Nebr… Big Ten 22 Linds… Sr OH 6-4 Papilli… Skutt Cathol… 24 12 50
#> 13 2024-2025 Nebr… Big Ten 27 Harpe… So OH 6-2 Ann Arb… Skyline 36 36 121
#> # ℹ 16 more variables: Kills <dbl>, Errors <dbl>, `Total Attacks` <dbl>, `Hit Pct` <dbl>,
#> # Assists <dbl>, Aces <dbl>, SErr <dbl>, Digs <dbl>, RetAtt <dbl>, RErr <dbl>, `Block Solos` <dbl>,
#> # `Block Assists` <dbl>, BErr <dbl>, PTS <dbl>, BHE <dbl>, `Trpl Dbl` <dbl>
This returns all of the stats included by
team_season_stats()
, plus GP and GS, which are Games Played
and Games Started, respectively.
Match stats
In addition to overall season summary stats, the NCAA provides match-level data for both teams and individual players.
Team match stats
To get overall match stats for a team in a particular season, use
team_match_stats()
.
find_team_id(team = "Nebraska", year = 2024) |>
team_match_stats()
#> # A tibble: 37 × 21
#> Date Team Conference Opponent Result S Kills Errors `Total Attacks` `Hit Pct` Assists Aces
#> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 08/27/… Nebr… Big Ten Kentuck… W 3-1 4 47 16 120 0.258 44 4
#> 2 08/30/… Nebr… Big Ten A&M-Cor… W 3-0 3 48 7 96 0.427 43 7
#> 3 08/31/… Nebr… Big Ten TCU W 3-1 4 55 25 141 0.213 52 9
#> 4 09/03/… Nebr… Big Ten @ SMU L 0-3 3 36 18 105 0.171 35 1
#> 5 09/05/… Nebr… Big Ten The Cit… W 3-0 3 43 7 98 0.367 39 6
#> 6 09/07/… Nebr… Big Ten Montana… W 3-0 3 47 11 90 0.4 44 7
#> 7 09/10/… Nebr… Big Ten Creight… W 3-2 5 73 27 193 0.238 67 2
#> 8 09/13/… Nebr… Big Ten Arizona… W 3-0 3 48 12 113 0.319 47 2
#> 9 09/14/… Nebr… Big Ten Wichita… W 3-0 3 50 8 88 0.477 44 3
#> 10 09/18/… Nebr… Big Ten Stanford W 3-0 3 38 13 95 0.263 36 5
#> # ℹ 27 more rows
#> # ℹ 9 more variables: SErr <dbl>, Digs <dbl>, RetAtt <dbl>, RErr <dbl>, `Block Solos` <dbl>,
#> # `Block Assists` <dbl>, BErr <dbl>, PTS <dbl>, BHE <dbl>
Player match stats
Similarly, you can get match stats for each player in a single match.
But to do this, you must know the NCAA’s contest ID for the particular
match or matches that you’re interested in. Use the
find_team_contests()
function to return a data frame of all
of the matches for a particular team and season, along with the contest
IDs.
(neb2024contests <- find_team_id(team = "Nebraska", year = 2024) |>
find_team_contests())
#> # A tibble: 36 × 6
#> date team opponent result attendance contest
#> <chr> <chr> <chr> <chr> <dbl> <chr>
#> 1 08/27/2024 Nebraska Kentucky W 3-1 9280 5362360
#> 2 08/30/2024 Nebraska A&M-Corpus Christi W 3-0 8956 5362361
#> 3 08/31/2024 Nebraska TCU W 3-1 8695 5362362
#> 4 09/03/2024 Nebraska SMU L 0-3 6773 5362363
#> 5 09/05/2024 Nebraska The Citadel W 3-0 8607 5362364
#> 6 09/07/2024 Nebraska Montana St. W 3-0 8456 5362365
#> 7 09/10/2024 Nebraska Creighton W 3-2 8924 5362366
#> 8 09/13/2024 Nebraska Arizona St. W 3-0 8772 5362367
#> 9 09/14/2024 Nebraska Wichita St. W 3-0 8541 5362368
#> 10 09/18/2024 Nebraska Stanford W 3-0 8952 5362369
#> # ℹ 26 more rows
Once we have the contest IDs, we can grab one and pass it to
player_match_stats()
.
player_match_stats(contest = "6080708")
#> # A tibble: 25 × 26
#> Season Date Team Conference `Opponent Team` `Opponent Conference` Location Number Player
#> <chr> <date> <chr> <chr> <chr> <chr> <chr> <dbl> <chr>
#> 1 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 2 Ava F…
#> 2 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 3 Gilli…
#> 3 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 8 Camry…
#> 4 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 5 Jorda…
#> 5 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 14 Carol…
#> 6 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 44 Maggi…
#> 7 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 24 Quinn…
#> 8 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 9 Jess …
#> 9 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 11 Jocel…
#> 10 2024-2025 2024-12-19 Penn … Big Ten Nebraska Big Ten Away 21 Izzy …
#> # ℹ 15 more rows
#> # ℹ 17 more variables: P <chr>, S <int>, Kills <int>, Errors <int>, TotalAttacks <int>, HitPct <dbl>,
#> # Assists <int>, Aces <int>, SErr <int>, Digs <int>, RetAtt <int>, RErr <int>, BlockSolos <int>,
#> # BlockAssists <int>, BErr <int>, PTS <dbl>, BHE <int>
This returns a list with two elements—one for each team. If we just
want to return a single team’s match stats, we can specify this with the
team
argument. Also, by default, the team stats are
included in the output, but we can remove these with
team_stats = FALSE
.
player_match_stats(contest = "6080708", team = "Nebraska", team_stats = FALSE)
#> # A tibble: 10 × 26
#> Season Date Team Conference `Opponent Team` `Opponent Conference` Location Number Player
#> <chr> <date> <chr> <chr> <chr> <chr> <chr> <dbl> <chr>
#> 1 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 5 Rebek…
#> 2 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 13 Merri…
#> 3 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 6 Laney…
#> 4 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 15 Andi …
#> 5 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 12 Taylo…
#> 6 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 10 Olivi…
#> 7 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 27 Harpe…
#> 8 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 9 Kenne…
#> 9 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 2 Berge…
#> 10 2024-2025 2024-12-19 Nebra… Big Ten Penn St. Big Ten Home 8 Lexi …
#> # ℹ 17 more variables: P <chr>, S <int>, Kills <int>, Errors <int>, TotalAttacks <int>, HitPct <dbl>,
#> # Assists <int>, Aces <int>, SErr <int>, Digs <int>, RetAtt <int>, RErr <int>, BlockSolos <int>,
#> # BlockAssists <int>, BErr <int>, PTS <dbl>, BHE <int>
Play-by-play data
Play-by-play data for matches are also available on the NCAA’s
website, if you know the contest ID. The match_pbp()
function extracts relevant events within a match.
match_pbp(contest = "6080708") |>
head(20) # cut this off, because it has 1525 rows!
#> # A tibble: 20 × 8
#> set away_team home_team score team event player description
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 1 Penn St. Nebraska 0-0 Penn St. Serve Jocelyn Nathan Jocelyn Nathan serves
#> 2 1 Penn St. Nebraska 0-0 Nebraska Reception Bergen Reilly Reception by Bergen Reilly
#> 3 1 Penn St. Nebraska 0-0 Nebraska Set Lexi Rodriguez Set by Lexi Rodriguez
#> 4 1 Penn St. Nebraska 0-0 Nebraska Attack Merritt Beason Attack by Merritt Beason
#> 5 1 Penn St. Nebraska 0-0 Nebraska Set Bergen Reilly Set by Bergen Reilly
#> 6 1 Penn St. Nebraska 0-0 Nebraska Attack Harper Murray Attack by Harper Murray
#> 7 1 Penn St. Nebraska 0-0 Penn St. Dig Gillian Grimes Dig by Gillian Grimes
#> 8 1 Penn St. Nebraska 0-0 Penn St. Set Izzy Starck Set by Izzy Starck
#> 9 1 Penn St. Nebraska 0-0 Penn St. Attack Taylor Trammell Attack by Taylor Trammell
#> 10 1 Penn St. Nebraska 0-0 Nebraska Block Rebekah Allick Block by Rebekah Allick
#> 11 1 Penn St. Nebraska 0-1 Nebraska Block Rebekah Allick Block by Rebekah Allick
#> 12 1 Penn St. Nebraska 0-1 Nebraska Serve Lexi Rodriguez Lexi Rodriguez serves
#> 13 1 Penn St. Nebraska 0-1 Penn St. Reception Jess Mruzik Reception by Jess Mruzik
#> 14 1 Penn St. Nebraska 0-1 Penn St. Set Izzy Starck Set by Izzy Starck
#> 15 1 Penn St. Nebraska 0-1 Penn St. Attack Jess Mruzik Attack by Jess Mruzik
#> 16 1 Penn St. Nebraska 0-1 Nebraska Dig Harper Murray Dig by Harper Murray
#> 17 1 Penn St. Nebraska 0-1 Penn St. Set Izzy Starck Set by Izzy Starck
#> 18 1 Penn St. Nebraska 0-1 Penn St. Attack Caroline Jurevicius Attack by Caroline Jurevici…
#> 19 1 Penn St. Nebraska 1-1 Penn St. Kill Caroline Jurevicius Kill by Caroline Jurevicius
#> 20 1 Penn St. Nebraska 1-1 Penn St. Serve Gillian Grimes Gillian Grimes serves
Aggregating data
Though the season, match, and play-by-play data are useful at the
individual level, they can be more useful when aggregated. The
group_stats()
function aggregates season, match, and
play-by-play data over multiple teams and/or years by applying the
player_season_stats()
, player_match_stats()
,
or match_pbp()
across teams and years.
group_stats(teams = c("Nebraska", "Wisconsin"), year = 2023:2024, level = "season")
#> $playerdata
#> # A tibble: 54 × 30
#> Season Team Conference Number Player Yr Pos Ht GP GS S Kills Errors
#> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 2023-2024 Nebraska Big Ten 2 Bergen Reilly Fr S 6-1 35 35 121 70 19
#> 2 2023-2024 Nebraska Big Ten 5 Rebekah Alli… So MB 6-4 32 31 105 185 61
#> 3 2023-2024 Nebraska Big Ten 6 Laney Choboy Fr L/DS 5-3 34 33 117 0 1
#> 4 2023-2024 Nebraska Big Ten 7 Maisie Boesi… So L/DS 5-6 18 0 36 0 0
#> 5 2023-2024 Nebraska Big Ten 8 Lexi Rodrigu… Jr L/DS 5-5 35 0 121 1 0
#> 6 2023-2024 Nebraska Big Ten 9 Kennedi Orr Jr S 6-0 29 0 96 1 0
#> 7 2023-2024 Nebraska Big Ten 11 Hayden Kubik So OH 6-2 9 0 10 3 7
#> 8 2023-2024 Nebraska Big Ten 13 Merritt Beas… Jr OH 6-4 35 35 121 455 153
#> 9 2023-2024 Nebraska Big Ten 14 Ally Batenho… Jr OH 6-5 30 2 87 196 91
#> 10 2023-2024 Nebraska Big Ten 15 Andi Jackson Fr MB 6-3 34 34 118 237 67
#> # ℹ 44 more rows
#> # ℹ 17 more variables: `Total Attacks` <dbl>, `Hit Pct` <dbl>, Assists <dbl>, Aces <dbl>, SErr <dbl>,
#> # Digs <dbl>, RetAtt <dbl>, RErr <dbl>, `Block Solos` <dbl>, `Block Assists` <dbl>, BErr <dbl>,
#> # PTS <dbl>, BHE <dbl>, `Trpl Dbl` <dbl>, `Dbl Dbl` <dbl>, Hometown <chr>, `High School` <chr>
#>
#> $teamdata
#> # A tibble: 4 × 23
#> Season Team Conference S Kills Errors `Total Attacks` `Hit Pct` Assists Aces SErr Digs
#> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 2023-2024 Nebraska Big Ten 121 1676 597 3959 0.273 1553 143 309 1666
#> 2 2024-2025 Nebraska Big Ten 122 1721 551 4114 0.284 1596 155 193 1856
#> 3 2023-2024 Wiscons… Big Ten 119 1654 428 3950 0.31 1552 184 270 1741
#> 4 2024-2025 Wiscons… Big Ten 120 1657 486 4090 0.286 1562 183 280 1785
#> # ℹ 11 more variables: RetAtt <dbl>, RErr <dbl>, `Block Solos` <dbl>, `Block Assists` <dbl>,
#> # BErr <dbl>, PTS <dbl>, BHE <dbl>, `Trpl Dbl` <dbl>, `Dbl Dbl` <dbl>, Hometown <chr>,
#> # `High School` <chr>
We don’t have other examples, because these take a while to run.
There are also convenience functions conference_stats()
and division_stats()
that automatically extract data for a
particular conference or NCAA division.
conference_stats(year = 2024, conf = "Big Ten", level = "season")
#> $playerdata
#> # A tibble: 274 × 29
#> Season Team Conference Number Player Yr Pos Ht Hometown `High School` GP GS S
#> <chr> <chr> <chr> <dbl> <chr> <chr> <chr> <chr> <chr> <chr> <dbl> <dbl> <dbl>
#> 1 2024-2025 Illi… Big Ten 2 Raege… Sr S 5-10 Sioux F… O'Gorman 31 0 108
#> 2 2024-2025 Illi… Big Ten 3 Lily … So L/DS 5-6 Emden, … University 26 1 85
#> 3 2024-2025 Illi… Big Ten 4 Bianc… So S 5-8 Orland … Carl Sandburg 9 0 21
#> 4 2024-2025 Illi… Big Ten 5 Taylo… Fr OH 6-4 Kelowna… Okanagan Mis… 11 0 16
#> 5 2024-2025 Illi… Big Ten 8 Averi… Jr OH 6-2 Bloomin… Normal Commu… 31 31 114
#> 6 2024-2025 Illi… Big Ten 10 Carol… Sr L/DS 5-11 Napervi… Benet Academy 8 0 31
#> 7 2024-2025 Illi… Big Ten 11 Cari … So MB 6-4 Ann Arb… Skyline 31 31 114
#> 8 2024-2025 Illi… Big Ten 12 Raina… Sr OH 6-1 Marengo… Highland 31 31 114
#> 9 2024-2025 Illi… Big Ten 13 Kenzi… Fr L/DS 5-7 Cincinn… Mount Notre … 2 0 2
#> 10 2024-2025 Illi… Big Ten 16 Ashly… Fr MB 6-4 Greenvi… DH Conley 31 31 114
#> # ℹ 264 more rows
#> # ℹ 16 more variables: Kills <dbl>, Errors <dbl>, `Total Attacks` <dbl>, `Hit Pct` <dbl>,
#> # Assists <dbl>, Aces <dbl>, SErr <dbl>, Digs <dbl>, RetAtt <dbl>, RErr <dbl>, `Block Solos` <dbl>,
#> # `Block Assists` <dbl>, BErr <dbl>, PTS <dbl>, BHE <dbl>, `Trpl Dbl` <dbl>
#>
#> $teamdata
#> # A tibble: 18 × 20
#> Season Team Conference S Kills Errors `Total Attacks` `Hit Pct` Assists Aces SErr Digs
#> <chr> <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 2024-2025 Illino… Big Ten 114 1432 559 3793 0.23 1311 183 275 1411
#> 2 2024-2025 Indiana Big Ten 108 1384 595 3774 0.209 1283 171 311 1393
#> 3 2024-2025 Iowa Big Ten 119 1440 678 4024 0.189 1313 178 268 1573
#> 4 2024-2025 Maryla… Big Ten 112 1322 566 3722 0.203 1197 223 276 1465
#> 5 2024-2025 Michig… Big Ten 117 1535 628 4081 0.222 1436 181 284 1633
#> 6 2024-2025 Michig… Big Ten 114 1399 604 3877 0.205 1275 157 265 1595
#> 7 2024-2025 Minnes… Big Ten 122 1581 560 4226 0.242 1441 181 262 1869
#> 8 2024-2025 Nebras… Big Ten 122 1721 551 4114 0.284 1596 155 193 1856
#> 9 2024-2025 Northw… Big Ten 106 1202 601 3488 0.172 1103 146 232 1343
#> 10 2024-2025 Ohio S… Big Ten 117 1476 641 4086 0.204 1383 177 249 1665
#> 11 2024-2025 Oregon Big Ten 117 1554 531 3915 0.261 1442 202 270 1637
#> 12 2024-2025 Penn S… Big Ten 135 1972 648 4673 0.283 1841 203 324 1994
#> 13 2024-2025 Purdue Big Ten 118 1683 509 4191 0.28 1568 146 262 1841
#> 14 2024-2025 Rutgers Big Ten 104 1145 540 3441 0.176 1080 142 294 1243
#> 15 2024-2025 Southe… Big Ten 122 1597 622 4091 0.238 1469 184 363 1586
#> 16 2024-2025 UCLA Big Ten 109 1474 544 3766 0.247 1373 125 265 1513
#> 17 2024-2025 Washin… Big Ten 117 1494 601 3970 0.225 1400 190 283 1612
#> 18 2024-2025 Wiscon… Big Ten 120 1657 486 4090 0.286 1562 183 280 1785
#> # ℹ 8 more variables: RetAtt <dbl>, RErr <dbl>, `Block Solos` <dbl>, `Block Assists` <dbl>,
#> # BErr <dbl>, PTS <dbl>, BHE <dbl>, `Trpl Dbl` <dbl>
Well, that covers most of the functionality of {ncaavolleyballr}
.
If you find any bugs or have any questions, please reach out.