Lahmanのデータベースを使って, 歴代の投手成績推移をplotlyで可視化します.
rChartsがCRANから消えたのでplotlyに, データも2014年版の同梱CSVから Lahmanパッケージに切り替えました.
library(dplyr)
library(ggplot2)
library(plotly)
library(Lahman)
library(knitr)
legends <-
Pitching |>
summarise(通算勝利 = sum(W, na.rm = TRUE), .by = playerID) |>
filter(通算勝利 >= 250)
career <-
Pitching |>
semi_join(legends, by = "playerID") |>
summarise(across(c(W, L, H, SO, HR, BB), \(x) sum(x, na.rm = TRUE)),
.by = c(playerID, yearID)) |>
arrange(playerID, yearID) |>
mutate(通算勝利 = cumsum(W),
通算被本塁打 = cumsum(HR),
通算奪三振 = cumsum(SO),
通算与四球 = cumsum(BB),
デビュー年 = min(yearID),
.by = playerID) |>
inner_join(People |> transmute(playerID, 選手 = paste(nameFirst, nameLast)),
by = "playerID")
該当するのは49人です.
career |>
summarise(デビュー = min(yearID), 最終年 = max(yearID),
勝利 = max(通算勝利), .by = 選手) |>
arrange(desc(勝利)) |>
head(10) |>
kable()
| 選手 | デビュー | 最終年 | 勝利 |
|---|---|---|---|
| Cy Young | 1890 | 1911 | 511 |
| Walter Johnson | 1907 | 1927 | 417 |
| Pete Alexander | 1911 | 1930 | 373 |
| Christy Mathewson | 1900 | 1916 | 373 |
| Pud Galvin | 1875 | 1892 | 365 |
| Warren Spahn | 1942 | 1965 | 363 |
| Kid Nichols | 1890 | 1906 | 362 |
| Greg Maddux | 1986 | 2008 | 355 |
| Roger Clemens | 1984 | 2007 | 354 |
| Tim Keefe | 1880 | 1893 | 342 |
career_line <- function(d, ycol, title) {
plot_ly(d, x = ~yearID, y = as.formula(paste0("~", ycol)),
color = ~選手, type = "scatter", mode = "lines") |>
layout(title = title,
xaxis = list(title = "year"),
yaxis = list(title = ycol, rangemode = "tozero"))
}
career_line(career, "通算勝利", "通算勝利数")
デビュー年代別に数えると, 1960年代が9人で最多です.
career |>
summarise(デビュー = min(yearID), .by = 選手) |>
mutate(年代 = floor(デビュー / 10) * 10) |>
count(年代) |>
ggplot(aes(x = 年代, y = n)) +
geom_col(fill = "grey60") +
ylab("人数") +
ggtitle("250勝投手のデビュー年代")

近年ほど少なくなっています. 先発が完投しなくなり, 登板数も年間30試合台に 収まるようになったので, 通算勝利が積み上がりにくくなりました. 250勝は事実上, 過去の記録になりつつあります.
career_line(career, "通算被本塁打", "通算被本塁打数")
1940年代の前後で傾きが変わって見えます. 本塁打そのものが増えた時期です.
career_line(career, "通算奪三振", "通算奪三振数")
Nolan Ryanが5,714で突出しています.
career_line(career |> filter(デビュー年 >= 1980),
"通算被本塁打", "通算被本塁打数 (1980年以降デビュー)")
在籍年数が最も長いのはNolan Ryanで28年, 1966年から1993年までです.
long |> select(選手, 初年, 終年, 在籍, 勝利) |> head(5) |> kable()
| 選手 | 初年 | 終年 | 在籍 | 勝利 |
|---|---|---|---|---|
| Nolan Ryan | 1966 | 1993 | 28 | 324 |
| Tommy John | 1963 | 1989 | 27 | 288 |
| Jamie Moyer | 1986 | 2012 | 27 | 269 |
| Jim Kaat | 1959 | 1983 | 25 | 283 |
| Early Wynn | 1939 | 1963 | 25 | 300 |