Getting NBL Basketball stats using nblR
Jason Zivkovic
2023-02-07
Source:vignettes/using-nblR.Rmd
using-nblR.Rmd
Overview
This vignette will outline how to use the functions in the
nblR
package to allow users to obtain clean and tidy data
from the Australian National Basketball League (NBL).
Installation
You can install the CRAN version of nblR
with the below.
install.packages("nblR")
Alternatively, you can install the dev (little less stable) version
of nblR
from GitHub with:
# install.packages("remotes")
remotes::install_github("JaseZiv/nblR")
Usage
The following code will show you how to get various different statistics for the Australian National Basketball League (NBL).
Match Results
To get results of matches players in the NBL since the 1979 season,
use the nbl_results()
function. This function takes in one
argument - wide_or_long
(options either ‘wide’ or
‘long’).
Using wide_or_long = "wide"
, the resulting data frame
will have one row per match played, with the home and away team
listed.
results_wide <- nbl_results(wide_or_long = "wide")
dplyr::glimpse(results_wide)
#> Rows: 7,410
#> Columns: 22
#> $ match_id <int> 27606, 27607, 27608, 27518, 27519, 27520, 27521, 27…
#> $ season <chr> "1979", "1979", "1979", "1979", "1979", "1979", "19…
#> $ venue_name <chr> "Burwood Stadium", "Apollo Entertainment Centre", "…
#> $ round_number <chr> "1", "1", "1", "1", "1", "1", "2", "2", "2", "2", "…
#> $ match_number <int> 89, 90, 91, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, …
#> $ match_status <chr> "COMPLETE", "COMPLETE", "COMPLETE", "COMPLETE", "CO…
#> $ match_name <chr> "", "", "", "", "", "", "", "", "", "", "", "", "",…
#> $ match_type <chr> "REGULAR", "REGULAR", "REGULAR", "REGULAR", "REGULA…
#> $ home_team_id <int> 3690, 3697, 3709, 3708, 3702, 3695, 3714, 3683, 369…
#> $ home_team_name <chr> "Newcastle Falcons", "Glenelg Tigers", "Brisbane Bu…
#> $ home_team_nickname <chr> "FALCONS", "TIGERS", "BULLETS", "BRUINS", "SAINTS",…
#> $ home_score_string <chr> "62", "68", "70", "79", "94", "101", "86", "91", "9…
#> $ away_team_id <int> 3705, 3714, 3717, 3717, 3690, 3714, 3717, 3702, 370…
#> $ away_team_name <chr> "Nunawading Spectres", "City of Sydney Astronauts",…
#> $ away_team_nickname <chr> "SPECTRES", "Astronauts", "CANNONS", "CANNONS", "FA…
#> $ away_score_string <chr> "78", "65", "77", "82", "92", "77", "91", "88", "69…
#> $ at_neutral_venue <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
#> $ extra_periods_used <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
#> $ match_time <chr> "1979-02-24 12:00:00", "1979-02-24 12:00:00", "1979…
#> $ match_time_utc <chr> "1979-02-24 01:00:00", "1979-02-24 01:30:00", "1979…
#> $ attendance <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
#> $ duration <int> 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1…
Using wide_or_long = "long"
, the resulting data frame
will instead have two rows per match played, with both teams listed on a
separate line.
results_long <- nbl_results(wide_or_long = "long")
dplyr::glimpse(results_long)
#> Rows: 14,820
#> Columns: 23
#> $ match_id <int> 27606, 27606, 27607, 27607, 27608, 27608, 27518, 27…
#> $ season <chr> "1979", "1979", "1979", "1979", "1979", "1979", "19…
#> $ venue_name <chr> "Burwood Stadium", "Burwood Stadium", "Apollo Enter…
#> $ round_number <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", "…
#> $ match_number <int> 89, 89, 90, 90, 91, 91, 1, 1, 2, 2, 3, 3, 4, 4, 5, …
#> $ match_status <chr> "COMPLETE", "COMPLETE", "COMPLETE", "COMPLETE", "CO…
#> $ match_name <chr> "", "", "", "", "", "", "", "", "", "", "", "", "",…
#> $ match_type <chr> "REGULAR", "REGULAR", "REGULAR", "REGULAR", "REGULA…
#> $ team_id <int> 3690, 3705, 3697, 3714, 3709, 3717, 3708, 3717, 370…
#> $ team_name <chr> "Newcastle Falcons", "Nunawading Spectres", "Glenel…
#> $ team_nickname <chr> "FALCONS", "SPECTRES", "TIGERS", "Astronauts", "BUL…
#> $ score_string <chr> "62", "78", "68", "65", "70", "77", "79", "82", "94…
#> $ is_home_competitor <int> 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, …
#> $ opp_team_id <int> 3705, 3690, 3714, 3697, 3717, 3709, 3717, 3708, 369…
#> $ opp_team_name <chr> "Nunawading Spectres", "Newcastle Falcons", "City o…
#> $ opp_team_nickname <chr> "SPECTRES", "FALCONS", "Astronauts", "TIGERS", "CAN…
#> $ opp_score_string <chr> "78", "62", "65", "68", "77", "70", "82", "79", "92…
#> $ at_neutral_venue <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
#> $ extra_periods_used <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
#> $ match_time <chr> "1979-02-24 12:00:00", "1979-02-24 12:00:00", "1979…
#> $ match_time_utc <chr> "1979-02-24 01:00:00", "1979-02-24 01:00:00", "1979…
#> $ attendance <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
#> $ duration <int> 120, 120, 120, 120, 120, 120, 120, 120, 120, 120, 1…
Team Box Scores
To get box scores at the team level, use the
nbl_box_team()
function. This will return team box score
data since the 2015-2016 season. Note, not all fields will contain data
for earlier seasons.
team_box <- nbl_box_team()
glimpse(team_box)
#> Rows: 2,146
#> Columns: 67
#> $ match_id <int> 139002, 139002, 139003, 139003, 139004, 1390…
#> $ season <chr> "2015-2016", "2015-2016", "2015-2016", "2015…
#> $ home_away <chr> "home", "away", "home", "away", "home", "awa…
#> $ name <chr> "Adelaide 36ers", "New Zealand Breakers", "C…
#> $ short_name <chr> "36ers", "Breakers", "Taipans", "Hawks", "Cr…
#> $ code <chr> "ADL", "NZL", "CNS", "ILL", "TSV", "MEL", "S…
#> $ score <int> 90, 71, 79, 74, 84, 99, 87, 63, 66, 79, 93, …
#> $ full_score <int> 90, 71, 79, 74, 84, 99, 87, 63, 66, 79, 93, …
#> $ opp_name <chr> "New Zealand Breakers", "Adelaide 36ers", "I…
#> $ opp_short_name <chr> "Breakers", "36ers", "Hawks", "Taipans", "Me…
#> $ opp_score <int> 71, 90, 74, 79, 99, 84, 63, 87, 79, 66, 81, …
#> $ opp_full_score <int> 71, 90, 74, 79, 99, 84, 63, 87, 79, 66, 81, …
#> $ p1_score <int> 19, 17, 25, 16, 19, 28, 29, 15, 28, 26, 27, …
#> $ p2_score <int> 32, 9, 13, 22, 23, 15, 28, 17, 15, 13, 26, 2…
#> $ p3_score <int> 19, 24, 14, 12, 21, 29, 17, 15, 10, 14, 16, …
#> $ p4_score <int> 20, 21, 27, 24, 21, 27, 13, 16, 13, 26, 24, …
#> $ fouls <int> 4, 7, 5, 12, 6, 2, 2, 3, 6, 7, 4, 5, 6, 6, 7…
#> $ timeouts <int> 0, 2, 2, 1, 2, 1, 0, 2, 1, 1, 0, 2, 1, 2, 1,…
#> $ minutes <chr> "0", "0", "0", "0", "0", "0", "0", "0", "0",…
#> $ field_goals_made <int> 32, 29, 28, 25, 31, 37, 32, 22, 23, 29, 33, …
#> $ field_goals_attempted <int> 71, 77, 58, 47, 79, 68, 65, 66, 66, 80, 75, …
#> $ field_goals_percentage <int> 45, 37, 48, 53, 39, 54, 49, 33, 34, 36, 44, …
#> $ three_pointers_made <int> 8, 6, 8, 12, 6, 13, 10, 4, 3, 9, 11, 11, 10,…
#> $ three_pointers_attempted <int> 15, 30, 22, 20, 18, 23, 31, 26, 16, 23, 32, …
#> $ three_pointers_percentage <int> 53, 20, 36, 60, 33, 56, 32, 15, 18, 39, 34, …
#> $ two_pointers_made <int> 24, 23, 20, 13, 25, 24, 22, 18, 20, 20, 22, …
#> $ two_pointers_attempted <int> 56, 47, 36, 27, 61, 45, 34, 40, 50, 57, 43, …
#> $ two_pointers_percentage <int> 42, 48, 55, 48, 40, 53, 64, 45, 40, 35, 51, …
#> $ free_throws_made <int> 18, 7, 15, 12, 16, 12, 13, 15, 17, 12, 16, 1…
#> $ free_throws_attempted <int> 23, 10, 20, 19, 19, 19, 17, 18, 24, 13, 20, …
#> $ free_throws_percentage <int> 78, 70, 75, 63, 84, 63, 76, 83, 70, 92, 80, …
#> $ rebounds_defensive <int> 25, 21, 16, 17, 21, 29, 32, 24, 24, 32, 32, …
#> $ rebounds_offensive <int> 20, 15, 14, 10, 15, 11, 5, 11, 12, 18, 12, 1…
#> $ rebounds_total <int> 45, 36, 30, 27, 36, 40, 37, 35, 36, 50, 44, …
#> $ assists <int> 18, 14, 20, 11, 7, 20, 22, 9, 10, 17, 15, 16…
#> $ turnovers <int> 15, 12, 13, 23, 8, 10, 8, 11, 12, 15, 14, 10…
#> $ steals <int> 5, 7, 13, 6, 4, 1, 7, 2, 6, 2, 4, 5, 9, 6, 1…
#> $ blocks <int> 5, 3, 0, 2, 3, 3, 5, 2, 5, 1, 3, 3, 6, 2, 3,…
#> $ blocks_received <int> 3, 5, 2, 0, 3, 3, 2, 5, 1, 5, 3, 3, 2, 6, 3,…
#> $ fouls_personal <int> 15, 23, 16, 25, 20, 15, 15, 19, 19, 21, 12, …
#> $ fouls_on <int> 23, 15, 25, 15, 15, 20, 19, 15, 21, 19, 19, …
#> $ points <int> 90, 71, 79, 74, 84, 99, 87, 63, 66, 79, 93, …
#> $ points_from_turnovers <int> 6, 19, 21, 16, 14, 10, 13, 6, 6, 14, 4, 11, …
#> $ points_second_chance <int> 8, 8, 15, 8, 13, 12, 9, 6, 12, 23, 8, 22, 5,…
#> $ points_fast_break <int> 0, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0,…
#> $ bench_points <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 29, …
#> $ points_in_the_paint <int> 40, 40, 26, 24, 40, 38, 38, 24, 38, 38, 42, …
#> $ ot_score <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ time_leading <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ biggest_lead <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ lead_changes <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ times_scores_level <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ fouls_team <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ rebounds_team <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ rebounds_team_defensive <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ rebounds_team_offensive <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ efficiency_custom <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ turnovers_team <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ biggest_scoring_run <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ tot_eff_1 <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ tot_eff_2 <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ tot_eff_3 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ tot_eff_4 <dbl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ tot_eff_5 <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ tot_eff_6 <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ tot_eff_7 <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ fouls_total <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
Player Box Scores
To get box scores at the player level, use the
nbl_box_player()
function. This will return player box
score data since the 2015-2016 season. Note, not all fields will contain
data for earlier seasons.
player_box <- nbl_box_player()
glimpse(player_box)
#> Rows: 24,823
#> Columns: 47
#> $ match_id <int> 139002, 139002, 139002, 139002, 139002, 1390…
#> $ season <chr> "2015-2016", "2015-2016", "2015-2016", "2015…
#> $ team_name <chr> "Adelaide 36ers", "Adelaide 36ers", "Adelaid…
#> $ team_short_name <chr> "36ers", "36ers", "36ers", "36ers", "36ers",…
#> $ home_away <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,…
#> $ opp_name <chr> "New Zealand Breakers", "New Zealand Breaker…
#> $ opp_short_name <chr> "Breakers", "Breakers", "Breakers", "Breaker…
#> $ first_name <chr> "Adam", "Matthew", "nelson", "Brendan", "Ken…
#> $ family_name <chr> "Gibson", "Hodgson", "Larkins", "Teys", "McN…
#> $ playing_position <chr> "G", "CEN", "", "G", "G", "FWD", "FWD", "", …
#> $ starter <int> 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0,…
#> $ shirt_number <chr> "1", "3", "6", "7", "11", "12", "17", "20", …
#> $ captain <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
#> $ minutes <chr> "28:37", "18:22", "0:36", "16:31", "5:27", "…
#> $ points <int> 11, 18, 0, 10, 0, 2, 9, 7, 15, 13, 0, 5, 13,…
#> $ field_goals_made <int> 4, 7, 0, 4, 0, 1, 4, 2, 3, 5, 0, 2, 5, 5, 1,…
#> $ field_goals_attempted <int> 11, 10, 0, 7, 0, 2, 7, 5, 10, 13, 0, 6, 16, …
#> $ field_goals_percentage <int> 36, 70, 0, 57, 0, 50, 57, 40, 30, 38, 0, 33,…
#> $ three_pointers_made <int> 1, 0, 0, 1, 0, 0, 1, 1, 1, 3, 0, 0, 3, 1, 1,…
#> $ three_pointers_attempted <int> 1, 0, 0, 1, 0, 0, 2, 1, 1, 9, 0, 0, 8, 6, 2,…
#> $ three_pointers_percentage <int> 100, 0, 0, 100, 0, 0, 50, 100, 100, 33, 0, 0…
#> $ two_pointers_made <int> 3, 7, 0, 3, 0, 1, 3, 1, 2, 2, 0, 2, 2, 4, 0,…
#> $ two_pointers_attempted <int> 10, 10, 0, 6, 0, 2, 5, 4, 9, 4, 0, 6, 8, 5, …
#> $ two_pointers_percentage <int> 30, 70, 0, 50, 0, 50, 60, 25, 22, 50, 0, 33,…
#> $ free_throws_made <int> 2, 4, 0, 1, 0, 0, 0, 2, 8, 0, 0, 1, 0, 3, 0,…
#> $ free_throws_attempted <int> 2, 6, 0, 2, 0, 0, 0, 2, 9, 0, 0, 2, 0, 4, 0,…
#> $ free_throws_percentage <int> 100, 66, 0, 50, 0, 0, 0, 100, 88, 0, 0, 50, …
#> $ rebounds_defensive <int> 4, 2, 0, 4, 1, 2, 2, 0, 6, 3, 0, 1, 2, 2, 2,…
#> $ rebounds_offensive <int> 2, 7, 0, 1, 0, 2, 1, 0, 2, 0, 0, 5, 2, 0, 0,…
#> $ rebounds_total <int> 6, 9, 0, 5, 1, 4, 3, 0, 8, 3, 0, 6, 4, 2, 2,…
#> $ assists <int> 8, 0, 0, 1, 0, 0, 1, 3, 1, 1, 0, 3, 1, 6, 1,…
#> $ turnovers <int> 2, 1, 0, 1, 0, 1, 3, 3, 1, 1, 0, 2, 1, 2, 2,…
#> $ steals <int> 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 3, 1, 0,…
#> $ blocks <int> 0, 3, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0,…
#> $ blocks_received <int> 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 0, 2, 0, 0,…
#> $ fouls_personal <int> 2, 0, 0, 0, 1, 5, 2, 2, 1, 0, 0, 2, 2, 4, 2,…
#> $ fouls_on <int> 6, 3, 0, 3, 0, 0, 1, 2, 7, 0, 0, 1, 0, 5, 0,…
#> $ points_second_chance <int> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,…
#> $ active <int> 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1,…
#> $ photo_t <chr> "http://img.wh.sportingpulseinternational.co…
#> $ photo_s <chr> "http://img.wh.sportingpulseinternational.co…
#> $ name <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ points_fast_break <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ points_in_the_paint <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ plus_minus_points <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ efficiency_custom <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
#> $ scoreboard_name <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, …
Play-by-Play data
To get play-by-play data, use the nbl_pbp()
function.
This will return play-by-play data since the 2015-2016 season. Note, not
all fields will contain data for earlier seasons.
pbp <- nbl_pbp()
glimpse(pbp)
#> Rows: 597,443
#> Columns: 25
#> $ match_id <int> 139002, 139002, 139002, 139002, 139002, 139002, 139002…
#> $ season <chr> "2015-2016", "2015-2016", "2015-2016", "2015-2016", "2…
#> $ team_name <chr> NA, NA, "New Zealand Breakers", "Adelaide 36ers", "Ade…
#> $ team_short_name <chr> NA, NA, "Breakers", "36ers", "36ers", "Breakers", "Bre…
#> $ home_away <chr> NA, NA, "away", "home", "home", "away", "away", "home"…
#> $ opp_name <chr> NA, NA, "Adelaide 36ers", "New Zealand Breakers", "New…
#> $ opp_short_name <chr> NA, NA, "36ers", "Breakers", "Breakers", "36ers", "36e…
#> $ period_type <chr> "REGULAR", "REGULAR", "REGULAR", "REGULAR", "REGULAR",…
#> $ period <int> 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, …
#> $ gt <chr> "00:00", "00:00", "00:06", "00:14", "00:15", "00:18", …
#> $ s1 <int> 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90…
#> $ s2 <int> 71, 71, 71, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68…
#> $ lead <int> 19, 19, 19, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22…
#> $ pno <dbl> 0, 0, 3, 11, 11, 12, 12, 8, 12, 13, 1, 3, 11, 11, 11, …
#> $ action_type <chr> "status", "game", "3pt", "turnover", "steal", "turnove…
#> $ sub_type <chr> "complete", "end", "", "badpass", "", "badpass", "defe…
#> $ success <int> 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, …
#> $ scoring <int> 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0, …
#> $ first_name <chr> NA, NA, "Shea", "Mitchell", "Mitchell", "Charles", "Ch…
#> $ family_name <chr> NA, NA, "Ili", "Creek", "Creek", "Jackson", "Jackson",…
#> $ shirt_number <chr> NA, NA, "5", "55", "55", "33", "33", "21", "6", "20", …
#> $ scoreboard_name <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ qualifier <list> <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL>, <NULL…
#> $ action_number <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ previous_action <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
Shots data
To get shot location and type data, use the nbl_shots()
function. This will return shooting data since the 2015-2016 season.
Note, not all fields will contain data for earlier seasons.
shots <- nbl_shots()
glimpse(shots)
#> Rows: 149,547
#> Columns: 20
#> $ match_id <int> 139002, 139002, 139002, 139002, 139002, 139002, 139002…
#> $ season <chr> "2015-2016", "2015-2016", "2015-2016", "2015-2016", "2…
#> $ team_name <chr> "Adelaide 36ers", "Adelaide 36ers", "Adelaide 36ers", …
#> $ team_short_name <chr> "36ers", "36ers", "36ers", "36ers", "36ers", "36ers", …
#> $ home_away <chr> "home", "home", "home", "home", "home", "home", "home"…
#> $ opp_name <chr> "New Zealand Breakers", "New Zealand Breakers", "New Z…
#> $ opp_short_name <chr> "Breakers", "Breakers", "Breakers", "Breakers", "Break…
#> $ r <int> 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, …
#> $ x <dbl> 16.423, 20.985, 22.445, 8.759, 4.197, 11.679, 3.832, 2…
#> $ y <dbl> 57.338, 92.491, 44.710, 43.686, 48.123, 42.321, 51.877…
#> $ period <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
#> $ period_type <chr> "REGULAR", "REGULAR", "REGULAR", "REGULAR", "REGULAR",…
#> $ action_type <chr> "2pt", "3pt", "2pt", "2pt", "2pt", "2pt", "2pt", "3pt"…
#> $ sub_type <chr> "jumpshot", "", "jumpshot", "jumpshot", "jumpshot", "j…
#> $ first_name <chr> "Mitchell", "Ebi", "Daniel", "Daniel", "Daniel", "Anth…
#> $ family_name <chr> "Creek", "Ere", "Johnson", "Johnson", "Johnson", "Petr…
#> $ shirt_number <chr> "55", "23", "21", "21", "21", "17", "23", "23", "21", …
#> $ action_number <int> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ previous_action <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
#> $ scoreboard_name <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…