The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
rvolleydataThis vignette will outline how to use the functions in the
rvolleydata package to access data from League One Volleyball Pro
(LOVB), Athletes
Unlimited Pro Volleyball (AU), and Major League Volleyball (MLV)
leagues.
You can install the development version of rvolleydata
from GitHub
with:
The following code snippets will provide information on how to access different volleyball league statistics. Each function has an identical signature where the user specifies their league of interest and the season(s).
Use load_schedule to access league schedules.
schedule <- load_schedule("au", 2025)
glimpse(schedule)
#> Rows: 31
#> Columns: 10
#> $ season <dbl> 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 202…
#> $ date <date> 2025-09-29, 2025-09-29, 2025-09-29, 2025-09-29, 20…
#> $ home_team <chr> "Team Bergmark", "Team Bergmark", "Team Bell", "Tea…
#> $ away_team <chr> "Team Zilio Pereira", "Team Zilio Pereira", "Team H…
#> $ home_team_set_wins <dbl> 2, 0, 1, 0, 2, 1, 2, 0, 3, 1, 2, 2, 2, 1, 2, 3, 1, …
#> $ away_team_set_wins <dbl> 1, 0, 2, 0, 1, 2, 1, 3, 0, 2, 1, 1, 1, 2, 1, 0, 2, …
#> $ result <chr> "2:1", "0:0", "1:2", "0:0", "2:1", "1:2", "2:1", "0…
#> $ match_id <dbl> 2249762, 2249974, 2249761, 2249973, 2249760, 224975…
#> $ phase <chr> "AU Test 2025", "AU Test 2025", "AU Test 2025", "AU…
#> $ league <chr> "au", "au", "au", "au", "au", "au", "au", "au", "au…Use load_pbp to access play-by-play data.
pbp <- load_pbp("lovb", 2025)
glimpse(pbp)
#> Rows: 73,416
#> Columns: 15
#> $ match_id <dbl> 2161068, 2161068, 2161068, 2161068, 2161068, 2161068, 2…
#> $ season <dbl> 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2…
#> $ match_datetime <dttm> 2025-01-09 00:30:00, 2025-01-09 00:30:00, 2025-01-09 0…
#> $ home_team_name <chr> "LOVB Atlanta", "LOVB Atlanta", "LOVB Atlanta", "LOVB A…
#> $ away_team_name <chr> "LOVB Salt Lake", "LOVB Salt Lake", "LOVB Salt Lake", "…
#> $ team_involved <chr> "home", "away", "away", "away", "home", "home", "away",…
#> $ jersey_number <dbl> 10, 17, 1, 11, 23, 77, 12, 10, 12, 1, 12, 1, 16, 10, 15…
#> $ action <chr> "S", "R", "E", "A", "D", "E", "A", "S", "R", "E", "A", …
#> $ outcome <chr> "-", "#", "+", "-", "#", "/", "=", "-", "+", "#", "#", …
#> $ set <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
#> $ point_number <dbl> 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4…
#> $ point_winner <chr> "home", "home", "home", "home", "home", "home", "home",…
#> $ home_score <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2…
#> $ away_score <dbl> 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2…
#> $ league <chr> "lovb", "lovb", "lovb", "lovb", "lovb", "lovb", "lovb",…Use load_officials to access officials data.
officials <- load_officials("mlv", 2025)
glimpse(officials)
#> Rows: 368
#> Columns: 9
#> $ match_id <dbl> 2160917, 2160917, 2160917, 2160917, 2160918, 2160918, 2…
#> $ season <dbl> 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2…
#> $ match_datetime <dttm> 2025-01-11 01:00:00, 2025-01-11 01:00:00, 2025-01-11 0…
#> $ officials_type <chr> "referee1", "referee2", "scorer1", "scorer2", "referee1…
#> $ full_name <chr> "Bill Stanley", "Suzanne Lowry", "Nicole Conway", "Kaci…
#> $ first_name <chr> "Bill", "Suzanne", "Nicole", "Kacie", "LANDRY", "DEVONI…
#> $ last_name <chr> "Stanley", "Lowry", "Conway", "Hoppe", "HOMSHER", "MCLA…
#> $ level <chr> "AAA", "AAA", "A", "A", "USA", "USA", "USA", "USA", "PV…
#> $ league <chr> "mlv", "mlv", "mlv", "mlv", "mlv", "mlv", "mlv", "mlv",…Use load_player_info to access player information.
player_info <- load_player_info("au", 2025)
glimpse(player_info)
#> Rows: 682
#> Columns: 29
#> $ match_id <dbl> 2249759, 2249759, 2249759, 2249759, 2249759, 2…
#> $ season <dbl> 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025…
#> $ match_datetime <dttm> 2025-09-28 21:00:00, 2025-09-28 21:00:00, 202…
#> $ player_id <dbl> 1127, 997, 1117, 993, 1124, 986, 996, 1196, 76…
#> $ player_name <chr> "Guedpard Pornpun", "Emily Thater", "Serena Gr…
#> $ first_name <chr> "Guedpard", "Emily", "Serena", "Manami", "Tess…
#> $ last_name <chr> "Pornpun", "Thater", "Gray", "Kojima", "Grubbs…
#> $ jersey_number <dbl> 3, 14, 15, 16, 17, 18, 19, 30, 31, 42, 81, 2, …
#> $ primary_position <dbl> 5, 4, 4, 1, 3, 3, 2, 2, 5, 4, 2, 5, 4, 2, 5, 2…
#> $ roster_status <chr> "active", "active", "active", "active", "activ…
#> $ is_foreign <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS…
#> $ is_confederation <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALS…
#> $ is_captain <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE…
#> $ is_libero <lgl> FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE…
#> $ set_1_is_starter <lgl> TRUE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FA…
#> $ set_1_starting_position <dbl> 1, 6, 3, NA, NA, 4, 5, NA, NA, NA, 2, 1, 6, NA…
#> $ set_2_is_starter <lgl> TRUE, TRUE, FALSE, FALSE, FALSE, TRUE, FALSE, …
#> $ set_2_starting_position <dbl> 1, 6, NA, NA, NA, 4, NA, 5, NA, 3, 2, NA, 4, 6…
#> $ set_3_is_starter <lgl> FALSE, FALSE, TRUE, FALSE, TRUE, FALSE, TRUE, …
#> $ set_3_starting_position <dbl> NA, NA, 6, NA, 4, NA, 5, 2, 1, 3, NA, NA, NA, …
#> $ set_4_is_starter <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ set_4_starting_position <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ set_5_is_starter <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ set_5_starting_position <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ team_name <chr> "Team Bell", "Team Bell", "Team Bell", "Team B…
#> $ team_short_name <chr> "ORA", "ORA", "ORA", "ORA", "ORA", "ORA", "ORA…
#> $ team_code <chr> "602", "602", "602", "602", "602", "602", "602…
#> $ team_color <chr> "cadmiumOrange", "cadmiumOrange", "cadmiumOran…
#> $ league <chr> "au", "au", "au", "au", "au", "au", "au", "au"…Use load_team_staff to access team staff data.
team_staff <- load_team_staff("lovb", 2025)
glimpse(team_staff)
#> Rows: 242
#> Columns: 9
#> $ match_id <dbl> 2161068, 2161068, 2161068, 2161068, 2161068, 2161068, 2…
#> $ season <dbl> 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2025, 2…
#> $ match_datetime <dttm> 2025-01-09 00:30:00, 2025-01-09 00:30:00, 2025-01-09 0…
#> $ team_name <chr> "LOVB Atlanta", "LOVB Atlanta", "LOVB Atlanta", "LOVB S…
#> $ staff_type <chr> "coach", "assistant", "assistant", "coach", "assistant"…
#> $ full_name <chr> "Paulo Coco", "Yoko Zetterlund", "Angela Gonzalez", "Ta…
#> $ first_name <chr> "Paulo", "Yoko", "Angela", "Tama", "Bruno", "Kolin", "M…
#> $ last_name <chr> "Coco", "Zetterlund", "Gonzalez", "Miyashiro", "Chateau…
#> $ league <chr> "lovb", "lovb", "lovb", "lovb", "lovb", "lovb", "lovb",…Use load_events_log to access events log data.
events_log <- load_events_log("mlv", 2025)
glimpse(events_log)
#> Rows: 36,784
#> Columns: 52
#> $ match_id <dbl> 2160916, 2160916, 2160916, 2160916, 21…
#> $ season <dbl> 2025, 2025, 2025, 2025, 2025, 2025, 20…
#> $ match_datetime <dttm> 2025-01-10, 2025-01-10, 2025-01-10, 2…
#> $ set <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,…
#> $ set_start_time <dttm> 2025-01-09 23:49:00, 2025-01-09 23:49…
#> $ set_end_time <dttm> 2025-01-10 00:29:00, 2025-01-10 00:29…
#> $ set_duration <dbl> 39, 39, 39, 39, 39, 39, 39, 39, 39, 39…
#> $ set_final_home_score <dbl> 25, 25, 25, 25, 25, 25, 25, 25, 25, 25…
#> $ set_final_away_score <dbl> 18, 18, 18, 18, 18, 18, 18, 18, 18, 18…
#> $ event_type <chr> "libero", "libero", "rally", "libero",…
#> $ event_time <dttm> 2025-01-10 00:04:42, 2025-01-10 00:04…
#> $ libero_enters <lgl> TRUE, TRUE, NA, FALSE, NA, FALSE, TRUE…
#> $ team_involved <chr> "home", "away", NA, "away", NA, "home"…
#> $ libero_jersey_number <dbl> 5, 2, NA, 2, NA, 5, 2, NA, 5, NA, NA, …
#> $ libero_substitute_jersey_number <dbl> 11, 7, NA, 7, NA, 11, 26, NA, 15, NA, …
#> $ rally_start_time <dttm> NA, NA, 2025-01-10 00:05:12, NA, 2025…
#> $ rally_end_time <dttm> NA, NA, 2025-01-10 00:05:26, NA, 2025…
#> $ rally_point_winner <chr> NA, NA, "away", NA, "home", NA, NA, "a…
#> $ substitute_in_jersey_number <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ substitute_out_jersey_number <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ challenge_approved <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ challenge_reason <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ challenge_method <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ challenge_response <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ challenge_at_home_score <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ challenge_at_away_score <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ challenge_score_change <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ serving_team <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ current_home_score <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ current_away_score <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ home_team_p1 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ home_team_p2 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ home_team_p3 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ home_team_p4 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ home_team_p5 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ home_team_p6 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ away_team_p1 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ away_team_p2 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ away_team_p3 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ away_team_p4 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ away_team_p5 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ away_team_p6 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ verified_time <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ verified_method <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ sanction_type <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ sanction_remark <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ sanction_staff_role <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ staff_first_name <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ staff_last_name <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ staff_type <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ is_exceptional <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ league <chr> "mlv", "mlv", "mlv", "mlv", "mlv", "ml…Use load_player_boxscore to access player boxscore
data.
player_boxscores <- load_player_boxscore("au", 2025)
glimpse(player_boxscores)
#> Rows: 1,563
#> Columns: 37
#> $ match_id <dbl> 2249759, 2249759, 2249759, 2249759, 2249759, …
#> $ season <dbl> 2025, 2025, 2025, 2025, 2025, 2025, 2025, 202…
#> $ match_datetime <dttm> 2025-09-28 21:00:00, 2025-09-28 21:00:00, 20…
#> $ team_involved <chr> "home", "home", "home", "home", "home", "home…
#> $ team_name <chr> "Team Bell", "Team Bell", "Team Bell", "Team …
#> $ player_name <chr> "Serena Gray", "Serena Gray", "Serena Gray", …
#> $ first_name <chr> "Serena", "Serena", "Serena", "Manami", "Mana…
#> $ last_name <chr> "Gray", "Gray", "Gray", "Kojima", "Kojima", "…
#> $ sets_played <dbl> 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, …
#> $ player_number <dbl> 15, 15, 15, 16, 16, 16, 19, 19, 19, 3, 3, 81,…
#> $ is_captain <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FAL…
#> $ is_libero <lgl> FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE,…
#> $ set_number <dbl> 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 1, 2, 1, 2, …
#> $ set_starting_position <chr> "3", NA, "6", "*", "*", "*", "5", NA, "5", "1…
#> $ serves <dbl> 6, NA, 3, 0, 0, 0, 2, NA, 2, 5, 5, 7, 3, NA, …
#> $ serve_errors <dbl> 2, NA, 0, 0, 0, 0, 0, NA, 0, 0, 0, 1, 2, NA, …
#> $ serve_aces <dbl> 1, NA, 1, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, NA, …
#> $ serve_efficiency <dbl> -0.167, NA, 0.667, NA, NA, NA, 0.000, NA, 0.5…
#> $ attack_attempts <dbl> 2, NA, 3, 0, 0, 0, 6, NA, 13, 0, 0, 7, 8, NA,…
#> $ attack_errors <dbl> 0, NA, 0, 0, 0, 0, 0, NA, 3, 0, 0, 0, 0, NA, …
#> $ attack_kills <dbl> 2, NA, 1, 0, 0, 0, 3, NA, 1, 0, 0, 3, 1, NA, …
#> $ attack_success_ratio <dbl> 1.00, NA, 0.33, NA, NA, NA, 0.50, NA, 0.08, N…
#> $ attack_efficiency <dbl> 1.000, NA, 0.333, NA, NA, NA, 0.500, NA, -0.2…
#> $ receptions <dbl> 0, NA, 2, 0, 2, 1, 5, NA, 7, 0, 0, 7, 12, NA,…
#> $ reception_errors <dbl> 0, NA, 1, 0, 0, 1, 0, NA, 2, 0, 0, 0, 1, NA, …
#> $ positive_reception_ratio <dbl> NA, NA, 0.50, NA, 0.50, 0.00, 0.80, NA, 0.14,…
#> $ perfect_reception_ratio <dbl> NA, NA, 0.00, NA, 0.50, 0.00, 0.20, NA, 0.14,…
#> $ block_points <dbl> 2, NA, 1, 0, 0, 0, 0, NA, 0, 0, 0, 0, 0, NA, …
#> $ block_touches <dbl> 0, NA, 3, 0, 0, 0, 0, NA, 0, 0, 0, 0, 1, NA, …
#> $ earned_points <dbl> 5, NA, 3, 0, 0, 0, 3, NA, 1, 0, 0, 3, 1, NA, …
#> $ net_points <dbl> 3, NA, 2, 0, 0, -1, 3, NA, -4, 0, 0, 2, -2, N…
#> $ assists <dbl> 0, NA, 0, 1, 0, 0, 0, NA, 0, 12, 8, 0, 0, NA,…
#> $ successful_digs <dbl> 0, NA, 3, 3, 4, 4, 0, NA, 1, 3, 3, 0, 1, NA, …
#> $ id <chr> "68d99179b1659f25ae13f696", "68d99179b1659f25…
#> $ spike_hp <dbl> 0, NA, 0, 0, 0, 0, 0, NA, 1, 0, 0, 0, 1, NA, …
#> $ points <dbl> 3, NA, 1, 0, 0, 0, 0, NA, 1, 0, 0, 1, 0, NA, …
#> $ league <chr> "au", "au", "au", "au", "au", "au", "au", "au…Use load_team_boxscore to access team boxscore data.
team_boxscores <- load_team_boxscore("mlv", 2025)
glimpse(team_boxscores)
#> Rows: 918
#> Columns: 29
#> $ match_id <dbl> 2160916, 2160916, 2160916, 2160916, 2160916, …
#> $ season <dbl> 2025, 2025, 2025, 2025, 2025, 2025, 2025, 202…
#> $ match_datetime <dttm> 2025-01-10 00:00:00, 2025-01-10 00:00:00, 20…
#> $ team_involved <chr> "home", "home", "home", "away", "away", "away…
#> $ team_name <chr> "Orlando Valkyries", "Orlando Valkyries", "Or…
#> $ set_number <dbl> 1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 5, 1, 2, 3, 4, …
#> $ serves <dbl> 25, 24, 26, 18, 19, 22, 22, 25, 22, 25, 15, 2…
#> $ serve_errors <dbl> 1, 2, 5, 5, 4, 1, 4, 2, 1, 3, 1, 5, 1, 3, 2, …
#> $ serve_aces <dbl> 1, 2, 1, 0, 0, 1, 0, 1, 2, 0, 0, 0, 1, 1, 1, …
#> $ serve_efficiency <dbl> 0.040, 0.000, -0.154, -0.222, -0.211, 0.136, …
#> $ attack_attempts <dbl> 27, 37, 52, 38, 38, 50, 46, 37, 40, 41, 23, 4…
#> $ attack_errors <dbl> 2, 0, 3, 2, 3, 7, 5, 4, 0, 4, 1, 4, 4, 2, 3, …
#> $ attack_kills <dbl> 14, 15, 15, 14, 15, 10, 13, 12, 9, 15, 11, 13…
#> $ attack_success_ratio <dbl> 0.52, 0.41, 0.29, 0.37, 0.39, 0.20, 0.28, 0.3…
#> $ attack_efficiency <dbl> 0.407, 0.378, 0.231, 0.237, 0.289, 0.040, 0.1…
#> $ receptions <dbl> 13, 15, 21, 24, 22, 21, 20, 18, 22, 20, 12, 1…
#> $ reception_errors <dbl> 0, 0, 1, 1, 2, 1, 0, 1, 1, 1, 0, 0, 1, 2, 0, …
#> $ positive_reception_ratio <dbl> 0.46, 0.47, 0.48, 0.46, 0.55, 0.43, 0.45, 0.2…
#> $ perfect_reception_ratio <dbl> 0.23, 0.33, 0.29, 0.08, 0.23, 0.33, 0.10, 0.1…
#> $ block_points <dbl> 3, 1, 1, 1, 1, 0, 0, 6, 4, 3, 0, 1, 2, 7, 1, …
#> $ block_touches <dbl> 5, 2, 3, 1, 8, 5, 6, 6, 2, 3, 2, 4, 4, 5, 3, …
#> $ earned_points <dbl> 18, 18, 17, 15, 16, 11, 13, 19, 15, 18, 11, 1…
#> $ net_points <dbl> 15, 16, 7, 7, 7, 2, 4, 12, 13, 10, 9, 5, 7, 1…
#> $ assists <dbl> 12, 14, 14, 14, 14, 10, 12, 10, 9, 14, 11, 13…
#> $ successful_digs <dbl> 15, 15, 29, 9, 19, 31, 23, 18, 20, 16, 12, 23…
#> $ id <chr> "6780447a19c53e576a0e9ec0", "6780447a19c53e57…
#> $ spike_hp <dbl> 1, 1, 0, 3, 1, 1, 1, 2, 7, 1, 0, 0, 6, 4, 3, …
#> $ points <dbl> 8, 8, 5, 1, 4, 4, 4, 9, 6, 6, 3, 4, 5, 10, 4,…
#> $ league <chr> "mlv", "mlv", "mlv", "mlv", "mlv", "mlv", "ml…These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.