【发布时间】:2017-06-22 07:30:32
【问题描述】:
我正在使用 RStudio 中的 MLB Statcast 数据,并试图确定哪些投手最常利用好球区的每个部分。
Statcast 以plate_x 的形式给出了球越过球门的坐标(球越过本垒时距板中部的左/右距离,以英尺为单位) , 和plate_z(球场在穿过本垒前部时的高度,以英尺为单位)。
例如dataframe:
pitcher_name <- c('AJ Griffin','AJ Griffin','AJ Griffin','AJ Griffin','AJ
Griffin','AJ Griffin','Adam Conley','Adam Conley','Adam Conley','Adam Conley')
plate_x <- c(0.88, -0.74, 0.54, 0.51, 0.54, 0.49, -0.70, -0.67, 0.78, 0.58)
plate_z <- c(1.63, 1.81, 2.03, 2.60, 1.83, 1.58, 2.82, 2.13, 1.10, 1.72)
strike_zone_analysis <- data.frame(pitcher_name, plate_x, plate_z)
我希望隔离较低的罢工,我可以使用 dplyr 中内置的 between 函数来做到这一点:
low_zone <- strike_zone_analysis %>% filter(between(plate_x, -1.01, 1.01),
between(plate_z, 1.49, 2.17))
我接下来要做的是使用 dplyr 中的 mutate 分配一个唯一标识符(说明低罢工与非低罢工的新列),该标识符适合特定于上述 between 函数的数据点。我的最终目标是使用类似于以下的代码来计算每个投手整体投出的低击球的比例:
P <- pitch_analysis.data %>%
group_by(pitcher_name) %>%
summarise(r=sum(str_detect(description,"swinging"))/n())
不确定如何组合 dplyr 的函数之间的变异和函数。
【问题讨论】: