R/fix_pbp.R

Defines functions fix_pbp

## pbp fix functions - for pbps with known errors, we fix those errors with the fix_pbp function


fix_pbp <- function(raw_msf_pbp) {
  game_id <- raw_msf_pbp[['api_json']][['game']][['id']]
  # detach the pbp data, but don't forget to reattach
  plays <- raw_msf_pbp[['api_json']][['plays']]
  ## sometimes there are 'player.id' columns that are tagged as just 'player'
  # find and fix those here
  old_names <- names(plays)
  names(plays) <- str_replace(names(plays), regex('Player$'), 'Player.id')
  if (!identical(names(plays), old_names)) {
    walk(setdiff(names(plays), old_names),
         ~message(glue('{.} renamed from {str_replace(., ".id", "")}
                       for game {game_id}')))
  }

  vio_cols <- c("violation.type", "violation.teamOrPersonal", "violation.team.id",
                "violation.player.id")

  for (vc in vio_cols) if (!vc %in% names(plays)) plays[[vc]] <- NA
  ## make sure that all id columns are treated as integers
  id_cols <- plays %>% select(ends_with('.id')) %>% names()
  for (col in id_cols) plays[[col]] <- as.integer(plays[[col]])


  ## this conditional is used to fix data with known flaws
  if (game_id == 66675) {
    # start of 4th Q subs are missing
    # msf has c(9142, 9282, 9399, 17181, 27591)
    # espn shows these subs at start of 4th
    # Alec Burks enters the game for Evan Fournier
    # Mitchell Robinson enters the game for Julius Randle

    new_row = tibble(description = "Mitchell Robinson added for Julius Randle",
                     substitution.incomingPlayer.id = 15282L,
                     substitution.outgoingPlayer.id = 9282L,
                     total_elapsed_seconds = 2160L,
                     substitution.team.abbreviation = 'NYK',
                     substitution.team.id = 83L,
                     substitution.incomingPlayer.lastName = 'Robinson',
                     substitution.incomingPlayer.firstName = 'Mitchell',
                     substitution.incomingPlayer.position = 'C',
                     substitution.incomingPlayer.jerseyNumber = 23L,
                     substitution.outgoingPlayer.lastName = 'Randle',
                     substitution.outgoingPlayer.firstName = 'Julius',
                     substitution.outgoingPlayer.position = 'C',
                     substitution.outgoingPlayer.jerseyNumber = 30L,
                     playStatus.quarter = 4L,
                     playStatus.secondsElapsed = 0L)

    new_row2 = tibble(description = "Alec Burks added for Evan Fournier",
                      substitution.incomingPlayer.id = 9507L,
                      substitution.outgoingPlayer.id = 9399L,
                      total_elapsed_seconds = 2160L,
                      substitution.team.abbreviation = 'NYK',
                      substitution.team.id = 83L,
                      substitution.incomingPlayer.lastName = 'Alec',
                      substitution.incomingPlayer.firstName = 'Burks',
                      substitution.incomingPlayer.position = 'SG',
                      substitution.incomingPlayer.jerseyNumber = 18L,
                      substitution.outgoingPlayer.lastName = 'Evan',
                      substitution.outgoingPlayer.firstName = 'Fournier',
                      substitution.outgoingPlayer.position = 'SG',
                      substitution.outgoingPlayer.jerseyNumber = 13L,
                      playStatus.quarter = 4L,
                      playStatus.secondsElapsed = 0L)


    plays <- bind_rows(plays %>% slice(1:351),
                           new_row,
                           new_row2,
                           plays %>% slice(352:nrow(plays))
    )


    new_row = tibble(description = "Obi Toppin enters the game for Alec Burks",
                     substitution.incomingPlayer.id = 27591L,
                     substitution.outgoingPlayer.id = 9507L,
                     total_elapsed_seconds = 3180L,
                     substitution.team.abbreviation = 'NYK',
                     substitution.team.id = 83L,
                     substitution.incomingPlayer.lastName = 'Obi',
                     substitution.incomingPlayer.position = 'PF',
                     substitution.incomingPlayer.jerseyNumber = 1L,
                     substitution.outgoingPlayer.lastName = 'Burks',
                     substitution.outgoingPlayer.firstName = 'Alec',
                     substitution.outgoingPlayer.position = 'SG',
                     substitution.outgoingPlayer.jerseyNumber = 18L,
                     playStatus.quarter = 5L,
                     playStatus.secondsElapsed = 0L)



    plays <- bind_rows(plays %>% slice(1:467),
                           new_row,
                           plays %>% slice(468:nrow(plays))
    )

    # line 474 appears to be bogus

    plays <- bind_rows(plays %>% slice(1:473),
                      plays %>% slice(475:nrow(plays)))



  }





# game 66689 --------------------------------------------------------------
    if (game_id == 66689) {
      # two substitutions at the start of the first quarter
      # after line 319
      # Quickley for Fournier
      # Robinson for Randle

      # also, after row 214 need to Randle for Grimes


      new_row = tibble(description = "Mitchell Robinson added for Julius Randle",
                       substitution.incomingPlayer.id = 15282L,
                       substitution.outgoingPlayer.id = 9282L,
                       total_elapsed_seconds = 2160L,
                       substitution.team.abbreviation = 'NYK',
                       substitution.team.id = 83L,
                       substitution.incomingPlayer.lastName = 'Robinson',
                       substitution.incomingPlayer.firstName = 'Mitchell',
                       substitution.incomingPlayer.position = 'C',
                       substitution.incomingPlayer.jerseyNumber = 23L,
                       substitution.outgoingPlayer.lastName = 'Randle',
                       substitution.outgoingPlayer.firstName = 'Julius',
                       substitution.outgoingPlayer.position = 'C',
                       substitution.outgoingPlayer.jerseyNumber = 30L,
                       playStatus.quarter = 4L,
                       playStatus.secondsElapsed = 0L)

      new_row2 = tibble(description = "Immanuel Quickley added for Evan Fournier",
                        substitution.incomingPlayer.id = 27724L,
                        substitution.outgoingPlayer.id = 9399L,
                        total_elapsed_seconds = 2160L,
                        substitution.team.abbreviation = 'NYK',
                        substitution.team.id = 83L,
                        substitution.incomingPlayer.lastName = 'Immanuel',
                        substitution.incomingPlayer.firstName = 'Quickley',
                        substitution.incomingPlayer.position = 'PG',
                        substitution.incomingPlayer.jerseyNumber = 5L,
                        substitution.outgoingPlayer.lastName = 'Fournier',
                        substitution.outgoingPlayer.firstName = 'Evan',
                        substitution.outgoingPlayer.position = 'SG',
                        substitution.outgoingPlayer.jerseyNumber = 13L,
                        playStatus.quarter = 4L,
                        playStatus.secondsElapsed = 0L)


      plays <- bind_rows(plays %>% slice(1:319),
                             new_row,
                             new_row2,
                             plays %>% slice(320:nrow(plays)))

     new_row <- structure(list(description = "Julius Randle added for Quentin Grimes",
                    substitution.incomingPlayer.id = 9282L, substitution.outgoingPlayer.id = 31054L,
                    total_elapsed_seconds = 1440, substitution.team.abbreviation = "NYK",
                    substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Randle",
                    substitution.incomingPlayer.firstName = "Julius", substitution.incomingPlayer.position = "C",
                    substitution.incomingPlayer.jerseyNumber = 30L, substitution.outgoingPlayer.lastName = "Grimes",
                    substitution.outgoingPlayer.firstName = "Quentin", substitution.outgoingPlayer.position = "PG",
                    substitution.outgoingPlayer.jerseyNumber = NA_integer_, playStatus.quarter = 3L,
                    playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                               "data.frame"), row.names = c(NA, -1L))

     plays <- bind_rows(plays %>% slice(1:214),
                        new_row,
                        plays %>% slice(215:nrow(plays)))

    }



     if (game_id == 66707) {
       new_row <- structure(list(description = "Mitchell Robinson added for Miles McBride",
                                 substitution.incomingPlayer.id = 15282L, substitution.outgoingPlayer.id = 31065L,
                                 total_elapsed_seconds = 1440, substitution.team.abbreviation = "NYK",
                                 substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Robinson",
                                 substitution.incomingPlayer.firstName = "Mitchell", substitution.incomingPlayer.position = "C",
                                 substitution.incomingPlayer.jerseyNumber = 23L, substitution.outgoingPlayer.lastName = "McBride",
                                 substitution.outgoingPlayer.firstName = "Miles", substitution.outgoingPlayer.position = "PG",
                                 substitution.outgoingPlayer.jerseyNumber = NA_integer_, playStatus.quarter = 3L,
                                 playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                            "data.frame"), row.names = c(NA, -1L))

       new_row2 <- structure(list(description = "Kemba Walker added for Taj Gibson",
                                  substitution.incomingPlayer.id = 9129L, substitution.outgoingPlayer.id = 9144L,
                                  total_elapsed_seconds = 1440, substitution.team.abbreviation = "NYK",
                                  substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Walker",
                                  substitution.incomingPlayer.firstName = "Kemba", substitution.incomingPlayer.position = "PG",
                                  substitution.incomingPlayer.jerseyNumber = 8L, substitution.outgoingPlayer.lastName = "Gibson",
                                  substitution.outgoingPlayer.firstName = "Taj", substitution.outgoingPlayer.position = "PF",
                                  substitution.outgoingPlayer.jerseyNumber = 67L, playStatus.quarter = 3L,
                                  playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                             "data.frame"), row.names = c(NA, -1L))

       plays <- bind_rows(plays %>% slice(1:233),
                          new_row,
                          new_row2,
                          plays %>% slice(234:nrow(plays)))


       new_row <- structure(list(description = "Obi Toppin added for Julius Randle",
                                 substitution.incomingPlayer.id = 27591L, substitution.outgoingPlayer.id = 9282L,
                                 total_elapsed_seconds = 2160, substitution.team.abbreviation = "NYK",
                                 substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Toppin",
                                 substitution.incomingPlayer.firstName = "Obi", substitution.incomingPlayer.position = "PF",
                                 substitution.incomingPlayer.jerseyNumber = 1L, substitution.outgoingPlayer.lastName = "Randle",
                                 substitution.outgoingPlayer.firstName = "Julius", substitution.outgoingPlayer.position = "C",
                                 substitution.outgoingPlayer.jerseyNumber = 30L, playStatus.quarter = 4L,
                                 playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                            "data.frame"), row.names = c(NA, -1L))

       plays <- bind_rows(plays %>% slice(1:353),
                          new_row,
                          plays %>% slice(354:nrow(plays)))



     }

  if (game_id == 66721) {
    new_row <- structure(list(description = "Mitchell Robinson added for Taj Gibson",
                              substitution.incomingPlayer.id = 15282L, substitution.outgoingPlayer.id = 9144L,
                              total_elapsed_seconds = 1440, substitution.team.abbreviation = "NYK",
                              substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Robinson",
                              substitution.incomingPlayer.firstName = "Mitchell", substitution.incomingPlayer.position = "C",
                              substitution.incomingPlayer.jerseyNumber = 23L, substitution.outgoingPlayer.lastName = "Gibson",
                              substitution.outgoingPlayer.firstName = "Taj", substitution.outgoingPlayer.position = "PF",
                              substitution.outgoingPlayer.jerseyNumber = 67L, playStatus.quarter = 3L,
                              playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                         "data.frame"), row.names = c(NA, -1L))


    plays <- bind_rows(plays %>% slice(1:218),
                       new_row,
                       plays %>% slice(219:nrow(plays)))


    new_row <- structure(list(description = "Taj Gibson added for Mitchell Robinson",
                              substitution.incomingPlayer.id = 9144L, substitution.outgoingPlayer.id = 15282L,
                              total_elapsed_seconds = 2160, substitution.team.abbreviation = "NYK",
                              substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Gibson",
                              substitution.incomingPlayer.firstName = "Taj", substitution.incomingPlayer.position = "PF",
                              substitution.incomingPlayer.jerseyNumber = 67L, substitution.outgoingPlayer.lastName = "Robinson",
                              substitution.outgoingPlayer.firstName = "Mitchell", substitution.outgoingPlayer.position = "C",
                              substitution.outgoingPlayer.jerseyNumber = 23L, playStatus.quarter = 4L,
                              playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                         "data.frame"), row.names = c(NA, -1L))

    plays <- bind_rows(plays %>% slice(1:313),
                       new_row,
                       plays %>% slice(314:nrow(plays)))
  }


  if (game_id == 66738) {
    new_row <- structure(list(description = "Mitchell Robinson added for Taj Gibson",
                              substitution.incomingPlayer.id = 15282L, substitution.outgoingPlayer.id = 9144L,
                              total_elapsed_seconds = 1440, substitution.team.abbreviation = "NYK",
                              substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Robinson",
                              substitution.incomingPlayer.firstName = "Mitchell", substitution.incomingPlayer.position = "C",
                              substitution.incomingPlayer.jerseyNumber = 23L, substitution.outgoingPlayer.lastName = "Gibson",
                              substitution.outgoingPlayer.firstName = "Taj", substitution.outgoingPlayer.position = "PF",
                              substitution.outgoingPlayer.jerseyNumber = 67L, playStatus.quarter = 3L,
                              playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                         "data.frame"), row.names = c(NA, -1L))


    plays <- bind_rows(plays %>% slice(1:182),
                       new_row,
                       plays %>% slice(183:nrow(plays)))




    new_row <- structure(list(description = "Mitchell Robinson added for Taj Gibson",
                              substitution.incomingPlayer.id = 15282L, substitution.outgoingPlayer.id = 9144L,
                              total_elapsed_seconds = 1440, substitution.team.abbreviation = "NYK",
                              substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Robinson",
                              substitution.incomingPlayer.firstName = "Mitchell", substitution.incomingPlayer.position = "C",
                              substitution.incomingPlayer.jerseyNumber = 23L, substitution.outgoingPlayer.lastName = "Gibson",
                              substitution.outgoingPlayer.firstName = "Taj", substitution.outgoingPlayer.position = "PF",
                              substitution.outgoingPlayer.jerseyNumber = 67L, playStatus.quarter = 4L,
                              playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                         "data.frame"), row.names = c(NA, -1L))


    plays <- bind_rows(plays %>% slice(1:301),
                       new_row,
                       plays %>% slice(302:nrow(plays)))
  }


  if (game_id == 66751) {
    new_row <- structure(list(description = "Obi Toppin added for Julius Randle",
                              substitution.incomingPlayer.id = 27591L, substitution.outgoingPlayer.id = 9282L,
                              total_elapsed_seconds = 2160, substitution.team.abbreviation = "NYK",
                              substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Toppin",
                              substitution.incomingPlayer.firstName = "Obi", substitution.incomingPlayer.position = "PF",
                              substitution.incomingPlayer.jerseyNumber = 1L, substitution.outgoingPlayer.lastName = "Randle",
                              substitution.outgoingPlayer.firstName = "Julius", substitution.outgoingPlayer.position = "C",
                              substitution.outgoingPlayer.jerseyNumber = 30L, playStatus.quarter = 4L,
                              playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                         "data.frame"), row.names = c(NA, -1L))

    new_row2 <- structure(list(description = "Derrick Rose added for Miles McBride",
                               substitution.incomingPlayer.id = 9142L, substitution.outgoingPlayer.id = 31065L,
                               total_elapsed_seconds = 2160, substitution.team.abbreviation = "NYK",
                               substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Rose",
                               substitution.incomingPlayer.firstName = "Derrick", substitution.incomingPlayer.position = "PG",
                               substitution.incomingPlayer.jerseyNumber = 4L, substitution.outgoingPlayer.lastName = "McBride",
                               substitution.outgoingPlayer.firstName = "Miles", substitution.outgoingPlayer.position = "PG",
                               substitution.outgoingPlayer.jerseyNumber = NA_integer_, playStatus.quarter = 4L,
                               playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                          "data.frame"), row.names = c(NA, -1L))

    plays <- bind_rows(plays %>% slice(1:299),
                       new_row,
                       new_row2,
                       plays %>% slice(300:nrow(plays)))



  }


  if (game_id == 66770) {
    new_row <- structure(list(description = "Obi Toppin added for Julius Randle",
                              substitution.incomingPlayer.id = 27591L, substitution.outgoingPlayer.id = 9282L,
                              total_elapsed_seconds = 720, substitution.team.abbreviation = "NYK",
                              substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Toppin",
                              substitution.incomingPlayer.firstName = "Obi", substitution.incomingPlayer.position = "PF",
                              substitution.incomingPlayer.jerseyNumber = 1L, substitution.outgoingPlayer.lastName = "Randle",
                              substitution.outgoingPlayer.firstName = "Julius", substitution.outgoingPlayer.position = "C",
                              substitution.outgoingPlayer.jerseyNumber = 30L, playStatus.quarter = 2L,
                              playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                         "data.frame"), row.names = c(NA, -1L))

    plays <- bind_rows(plays %>% slice(1:91),
                       new_row,
                       plays %>% slice(92:nrow(plays)))

    new_row <- structure(list(description = "Mitchell Robinson added for Taj Gibson",
                   substitution.incomingPlayer.id = 15282L, substitution.outgoingPlayer.id = 9144L,
                   total_elapsed_seconds = 1440, substitution.team.abbreviation = "NYK",
                   substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Robinson",
                   substitution.incomingPlayer.firstName = "Mitchell", substitution.incomingPlayer.position = "C",
                   substitution.incomingPlayer.jerseyNumber = 23L, substitution.outgoingPlayer.lastName = "Gibson",
                   substitution.outgoingPlayer.firstName = "Taj", substitution.outgoingPlayer.position = "PF",
                   substitution.outgoingPlayer.jerseyNumber = 67L, playStatus.quarter = 3L,
                   playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                              "data.frame"), row.names = c(NA, -1L))

    plays <- bind_rows(plays %>% slice(1:210),
                       new_row,
                       plays %>% slice(211:nrow(plays)))

  }


  if (game_id == 66799) {
    new_row <- structure(list(description = "Kemba Walker added for Derrick Rose",
                   substitution.incomingPlayer.id = 9129L, substitution.outgoingPlayer.id = 9142L,
                   total_elapsed_seconds = 1440, substitution.team.abbreviation = "NYK",
                   substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Walker",
                   substitution.incomingPlayer.firstName = "Kemba", substitution.incomingPlayer.position = "PG",
                   substitution.incomingPlayer.jerseyNumber = 8L, substitution.outgoingPlayer.lastName = "Rose",
                   substitution.outgoingPlayer.firstName = "Derrick", substitution.outgoingPlayer.position = "PG",
                   substitution.outgoingPlayer.jerseyNumber = 4L, playStatus.quarter = 3L,
                   playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                              "data.frame"), row.names = c(NA, -1L))

    new_row2 <- structure(list(description = "Mitchell Robinson added for Nerlens Noel",
                               substitution.incomingPlayer.id = 15282L, substitution.outgoingPlayer.id = 9413L,
                               total_elapsed_seconds = 1440, substitution.team.abbreviation = "NYK",
                               substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Robinson",
                               substitution.incomingPlayer.firstName = "Mitchell", substitution.incomingPlayer.position = "C",
                               substitution.incomingPlayer.jerseyNumber = 23L, substitution.outgoingPlayer.lastName = "Noel",
                               substitution.outgoingPlayer.firstName = "Nerlens", substitution.outgoingPlayer.position = "C",
                               substitution.outgoingPlayer.jerseyNumber = 3L, playStatus.quarter = 3L,
                               playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                          "data.frame"), row.names = c(NA, -1L))

    plays <- bind_rows(plays %>% slice(1:241),
                       new_row,
                       new_row2,
                       plays %>% slice(242:nrow(plays)))

  }

  if (game_id == 66818) {
    new_row <- structure(list(description = "Obi Toppin added for RJ Barrett",
                              substitution.incomingPlayer.id = 27591L, substitution.outgoingPlayer.id = 17181L,
                              total_elapsed_seconds = 720, substitution.team.abbreviation = "NYK",
                              substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Toppin",
                              substitution.incomingPlayer.firstName = "Obi", substitution.incomingPlayer.position = "PF",
                              substitution.incomingPlayer.jerseyNumber = 1L, substitution.outgoingPlayer.lastName = "Barrett",
                              substitution.outgoingPlayer.firstName = "RJ", substitution.outgoingPlayer.position = "SG",
                              substitution.outgoingPlayer.jerseyNumber = 9L, playStatus.quarter = 2L,
                              playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                         "data.frame"), row.names = c(NA, -1L))
    new_row2 <- structure(list(description = "Immanuel Quickley added for Julius Randle",
                               substitution.incomingPlayer.id = 27724L, substitution.outgoingPlayer.id = 9282L,
                               total_elapsed_seconds = 720, substitution.team.abbreviation = "NYK",
                               substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Quickley",
                               substitution.incomingPlayer.firstName = "Immanuel", substitution.incomingPlayer.position = "PG",
                               substitution.incomingPlayer.jerseyNumber = 5L, substitution.outgoingPlayer.lastName = "Randle",
                               substitution.outgoingPlayer.firstName = "Julius", substitution.outgoingPlayer.position = "C",
                               substitution.outgoingPlayer.jerseyNumber = 30L, playStatus.quarter = 2L,
                               playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                          "data.frame"), row.names = c(NA, -1L))

    plays <- bind_rows(plays %>% slice(1:98),
                       new_row,
                       new_row2,
                       plays %>% slice(99:nrow(plays)))


    new_row <- structure(list(description = "Obi Toppin added for Julius Randle",
                   substitution.incomingPlayer.id = 27591L, substitution.outgoingPlayer.id = 9282L,
                   total_elapsed_seconds = 2160, substitution.team.abbreviation = "NYK",
                   substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Toppin",
                   substitution.incomingPlayer.firstName = "Obi", substitution.incomingPlayer.position = "PF",
                   substitution.incomingPlayer.jerseyNumber = 1L, substitution.outgoingPlayer.lastName = "Randle",
                   substitution.outgoingPlayer.firstName = "Julius", substitution.outgoingPlayer.position = "C",
                   substitution.outgoingPlayer.jerseyNumber = 30L, playStatus.quarter = 4L,
                   playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                              "data.frame"), row.names = c(NA, -1L))

    plays <- bind_rows(plays %>% slice(1:320),
                       new_row,
                       plays %>% slice(321:nrow(plays)))
  }

  if (game_id == 66832) {
    new_row <- structure(list(description = "Obi Toppin added for Julius Randle",
                   substitution.incomingPlayer.id = 27591L, substitution.outgoingPlayer.id = 9282L,
                   total_elapsed_seconds = 720, substitution.team.abbreviation = "NYK",
                   substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Toppin",
                   substitution.incomingPlayer.firstName = "Obi", substitution.incomingPlayer.position = "PF",
                   substitution.incomingPlayer.jerseyNumber = 1L, substitution.outgoingPlayer.lastName = "Randle",
                   substitution.outgoingPlayer.firstName = "Julius", substitution.outgoingPlayer.position = "C",
                   substitution.outgoingPlayer.jerseyNumber = 30L, playStatus.quarter = 2L,
                   playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                              "data.frame"), row.names = c(NA, -1L))



    plays <- bind_rows(plays %>% slice(1:98),
                       new_row,
                       plays %>% slice(99:nrow(plays)))



  }


  if (game_id == 66845) {
    new_row <- structure(list(description = "Obi Toppin added for Julius Randle",
                              substitution.incomingPlayer.id = 27591L, substitution.outgoingPlayer.id = 9282L,
                              total_elapsed_seconds = 720, substitution.team.abbreviation = "NYK",
                              substitution.team.id = 83L, substitution.incomingPlayer.lastName = "Toppin",
                              substitution.incomingPlayer.firstName = "Obi", substitution.incomingPlayer.position = "PF",
                              substitution.incomingPlayer.jerseyNumber = 1L, substitution.outgoingPlayer.lastName = "Randle",
                              substitution.outgoingPlayer.firstName = "Julius", substitution.outgoingPlayer.position = "C",
                              substitution.outgoingPlayer.jerseyNumber = 30L, playStatus.quarter = 2L,
                              playStatus.secondsElapsed = 0L), class = c("tbl_df", "tbl",
                                                                         "data.frame"), row.names = c(NA, -1L))
    plays <- bind_rows(plays %>% slice(1:104),
                       new_row,
                       plays %>% slice(105:nrow(plays)))

  }




  # need to reattach the fixed play data here
  raw_msf_pbp[['api_json']][['plays']] <- plays
  return(raw_msf_pbp)
}
kburnham/tidynbadata documentation built on Aug. 7, 2024, 12:10 a.m.