HyannisHarborHawks commited on
Commit
ecf02aa
·
verified ·
1 Parent(s): 7428142

Update app.R

Browse files
Files changed (1) hide show
  1. app.R +38 -29
app.R CHANGED
@@ -1090,35 +1090,44 @@ clean_college_data <- function(data, teams = NA) {
1090
  data <- data %>%
1091
  filter(!(Level %in% c("D2", "JUCO", "NAIA", "D3")))
1092
 
1093
- #predict xwoba
1094
- data <- data %>% mutate(row_id = row_number())
1095
-
1096
- prob_cols <- c("prob_0", "prob_1", "prob_2", "prob_3", "prob_4")
1097
-
1098
- complete <- data %>%
1099
- filter(!is.na(ExitSpeed) & !is.na(Angle)) %>%
1100
- dplyr::select(-any_of(prob_cols))
1101
-
1102
- xwoba_preds <- predict(xwoba_model, complete, type = "prob")
1103
- colnames(xwoba_preds) <- prob_cols
1104
-
1105
- complete <- complete %>% bind_cols(xwoba_preds)
1106
-
1107
- data <- data %>%
1108
- dplyr::select(-any_of(prob_cols)) %>%
1109
- left_join(complete %>% dplyr::select(row_id, any_of(prob_cols)), by = "row_id") %>%
1110
- dplyr::select(-row_id)
1111
-
1112
- data <- data %>%
1113
- dplyr::select(-any_of(c("w1B", "w2B", "w3B", "wHR"))) %>%
1114
- cross_join(college_guts %>% dplyr::select(w1B, w2B, w3B, wHR)) %>%
1115
- mutate(xwOBA = w1B*prob_1 + w2B*prob_2 + w3B*prob_3 + wHR*prob_4 + 0*prob_0,
1116
- xwOBA = case_when(
1117
- KorBB == "Strikeout" ~ 0,
1118
- KorBB == "Walk" ~ .82,
1119
- event_type == "HBP" ~ .85,
1120
- TRUE ~ xwOBA
1121
- ))
 
 
 
 
 
 
 
 
 
1122
 
1123
  message(nrow(data), " rows cleaned.")
1124
 
 
1090
  data <- data %>%
1091
  filter(!(Level %in% c("D2", "JUCO", "NAIA", "D3")))
1092
 
1093
+ #If able predict xwoba, if not enough data default to NA
1094
+ data <- tryCatch({
1095
+ d <- data %>% mutate(row_id = row_number())
1096
+ prob_cols <- c("prob_0", "prob_1", "prob_2", "prob_3", "prob_4")
1097
+
1098
+ complete <- d %>%
1099
+ filter(!is.na(ExitSpeed) & !is.na(Angle)) %>%
1100
+ dplyr::select(-any_of(prob_cols))
1101
+
1102
+ xwoba_preds <- predict(xwoba_model, complete, type = "prob")
1103
+ colnames(xwoba_preds) <- prob_cols
1104
+
1105
+ complete <- complete %>% bind_cols(xwoba_preds)
1106
+
1107
+ d <- d %>%
1108
+ dplyr::select(-any_of(prob_cols)) %>%
1109
+ left_join(complete %>% dplyr::select(row_id, any_of(prob_cols)), by = "row_id") %>%
1110
+ dplyr::select(-row_id)
1111
+
1112
+ d <- d %>%
1113
+ dplyr::select(-any_of(c("w1B", "w2B", "w3B", "wHR"))) %>%
1114
+ cross_join(college_guts %>% dplyr::select(w1B, w2B, w3B, wHR)) %>%
1115
+ mutate(xwOBA = w1B*prob_1 + w2B*prob_2 + w3B*prob_3 + wHR*prob_4 + 0*prob_0,
1116
+ xwOBA = case_when(
1117
+ KorBB == "Strikeout" ~ 0,
1118
+ KorBB == "Walk" ~ .82,
1119
+ event_type == "HBP" ~ .85,
1120
+ TRUE ~ xwOBA
1121
+ ))
1122
+ d
1123
+ }, error = function(e) {
1124
+ message("xwOBA prediction failed: ", conditionMessage(e), " \u2014 setting xwOBA and prob_* to NA.")
1125
+ data %>% mutate(
1126
+ prob_0 = NA_real_, prob_1 = NA_real_, prob_2 = NA_real_,
1127
+ prob_3 = NA_real_, prob_4 = NA_real_,
1128
+ xwOBA = NA_real_
1129
+ )
1130
+ })
1131
 
1132
  message(nrow(data), " rows cleaned.")
1133