stringr 在 R 中处理棒球投球数据的问题

Problems with stringr working with baseball pitching data in R

我正在使用 R 中的棒球数据并尝试为某些情况分配权重 (avg_re),即有多少出局以及有多少跑垒员在垒。我有两个数据集,re_table 和 Season_RE.

re_table 有两列,情况 (base_out_state) 和权重 (avg_re)。第一行基本上告诉我们,当有人在 1b、2b 和 3b 上有 0 个出局时,预计得分为 2.57。 Season_RE 将情况列分为四个新列(outs、1b、2b 和 3b)。

这就是 re_table 的样子:

这就是 Season_RE 的样子:

我想做的是将 base_out_state 和 re_table 分成四个新类别。我已经成功完成了 outs,但我不知道如何完成 1b、2b 或 3b。我在网上找到的代码是用它来做的,但正如你所看到的,它对我没有任何作用。

library(stringr)
for (i in 1:nrow(re_table)){
  
  Season_RE$outs_when_up[i] = str_split(
    re_table$base_out_state, " ")[[i]][[1]]
  
  Season_RE$on_1b[i] = ifelse(str_split(
    re_table$base_out_state, "")[[i]][[5]] == "1b", 1, 0)

  Season_RE$on_2b[i] = ifelse(str_split(
    re_table$base_out_state, " ")[[i]][[6]] == "2b", 1, 0)
  
  Season_RE$on_3b[i] = ifelse(str_split(
    re_table$base_out_state, " ")[[i]][[7]] == "3b", 1, 0)
  
}

我以前从未使用过 stringr,也不知道我在做什么。如果您想查看整个代码,这里是 link:https://github.com/ethanmoore21/PitchQuality/blob/master/qop_3_rfs.R

代替str_split,我们可以使用str_detect

library(dplyr)
library(purrr)
library(stringr)
Season_RE2 <- map_dfc(c("1b", "2b", "3b"), ~ Season_RE %>%
       transmute(!! str_c("on_", .x) := +(str_detect(base_out_state, .x)))) %>%
       bind_cols(Season_RE, .)