R入門
セイバーメトリクス
最終更新:
r-intro
目次
MLBのシーズン40本塁打40盗塁以上を記録した選手を出力する
Lahmanデータベースを使うと簡単に調べることができる。
> Batting |> filter(HR >= 40 & SB >= 40) |>
+ left_join(People, by = join_by(playerID == playerID)) |>
+ select(nameFirst, nameLast, yearID, HR, SB) |>
+ arrange(yearID)
nameFirst nameLast yearID HR SB
1 Jose Canseco 1988 42 40
2 Barry Bonds 1996 42 40
3 Alex Rodriguez 1998 42 46
4 Alfonso Soriano 2006 46 41
記録した順に、ホセ・カンセコ、バリー・ボンズ、アレックス・ロドリゲス、アルフォンソ・ソリアーノの4人であることがわかる。
MLBの通算本塁打数の20位までを調べる
Lahmanデータベースを使うと簡単に調べることができる。
> library(Lahman)
> library(tidyverse)
> Batting %>% group_by(playerID) %>% summarize(HR = sum(HR)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, HR) %>% arrange(desc(HR)) %>%
+ as.data.frame() %>% head(20)
nameFirst nameLast HR
1 Barry Bonds 762
2 Hank Aaron 755
3 Babe Ruth 714
4 Albert Pujols 703
5 Alex Rodriguez 696
6 Willie Mays 660
7 Ken Griffey 630
8 Jim Thome 612
9 Sammy Sosa 609
10 Frank Robinson 586
11 Mark McGwire 583
12 Harmon Killebrew 573
13 Rafael Palmeiro 569
14 Reggie Jackson 563
15 Manny Ramirez 555
16 Mike Schmidt 548
17 David Ortiz 541
18 Mickey Mantle 536
19 Jimmie Foxx 534
20 Willie McCovey 521
通算本塁打数の一位はバリー・ボンズの762本、二位はハンク・アーロンの755本、三位はベーブ・ルースの714本であることがわかる。
MLBの通算盗塁数の20位までを調べる
Lahmanデータベースを使うと簡単に調べることができる。
> library(Lahman)
> library(tidyverse)
> Batting %>% group_by(playerID) %>% summarize(SB = sum(SB)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, SB) %>% arrange(desc(SB)) %>%
+ as.data.frame() %>% head(20)
nameFirst nameLast SB
1 Rickey Henderson 1406
2 Lou Brock 938
3 Billy Hamilton 914
4 Ty Cobb 896
5 Tim Raines 808
6 Vince Coleman 752
7 Eddie Collins 741
8 Max Carey 738
9 Honus Wagner 723
10 Joe Morgan 689
11 Willie Wilson 668
12 Bert Campaneris 649
13 Kenny Lofton 622
14 Otis Nixon 620
15 George Davis 619
16 Juan Pierre 614
17 Billy Hoy 596
18 Maury Wills 586
19 George Van Haltren 583
20 Ozzie Smith 580
通算盗塁数の一位はリッキー・ヘンダーソンの1406個、二位はルー・ブロックの938個、三位はビリー・ハミルトンの914個であることがわかる。
MLBの通算安打数の20位までを調べる
Lahmanデータベースを使うと簡単に調べることができる。
> library(Lahman)
> library(tidyverse)
> Batting %>% group_by(playerID) %>% summarize(H = sum(H)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, H) %>% arrange(desc(H)) %>%
+ as.data.frame() %>% head(20)
nameFirst nameLast H
1 Pete Rose 4256
2 Ty Cobb 4189
3 Hank Aaron 3771
4 Stan Musial 3630
5 Tris Speaker 3514
6 Derek Jeter 3465
7 Cap Anson 3435
8 Honus Wagner 3420
9 Carl Yastrzemski 3419
10 Albert Pujols 3384
11 Paul Molitor 3319
12 Eddie Collins 3315
13 Willie Mays 3283
14 Eddie Murray 3255
15 Nap Lajoie 3243
16 Cal Ripken 3184
17 Adrian Beltre 3166
18 George Brett 3154
19 Paul Waner 3152
20 Robin Yount 3142
通算安打数の一位はピート・ローズの4256本、二位はタイ・カッブの4189本、三位はハンク・アーロンの3771本であることがわかる。参考までに、イチローは以下のとおり3089本。
> Batting %>% group_by(playerID) %>% summarize(H = sum(H)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, H) %>% filter(nameFirst == "Ichiro") %>%
+ as.data.frame()
nameFirst nameLast H
1 Ichiro Suzuki 3089
MLBの通算二塁打数の20位までを調べる
Lahmanデータベースを使うと簡単に調べることができる。
> library(Lahman)
> library(tidyverse)
> Batting %>% group_by(playerID) %>% summarize(X2B = sum(X2B)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, X2B) %>% arrange(desc(X2B)) %>%
+ as.data.frame() %>% head(20)
nameFirst nameLast X2B
1 Tris Speaker 792
2 Pete Rose 746
3 Stan Musial 725
4 Ty Cobb 724
5 Albert Pujols 686
6 Craig Biggio 668
7 George Brett 665
8 Nap Lajoie 657
9 Carl Yastrzemski 646
10 Honus Wagner 643
11 Adrian Beltre 636
12 David Ortiz 632
13 Hank Aaron 624
14 Miguel Cabrera 607
15 Paul Molitor 605
16 Paul Waner 605
17 Cal Ripken 603
18 Barry Bonds 601
19 Luis Gonzalez 596
20 Todd Helton 592
通算通算二塁打数の一位はトリス・スピーカーの792本、二位はピート・ローズの746本、三位はスタン・ミュージアルの725本であることがわかる。参考までに、イチローは以下のとおり362本。
> Batting %>% group_by(playerID) %>% summarize(X2B = sum(X2B)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, X2B) %>% filter(nameFirst == "Ichiro") %>%
+ as.data.frame()
nameFirst nameLast X2B
1 Ichiro Suzuki 362
MLBの投手の通算勝利数の20位までを調べる
Lahmanデータベースを使うと簡単に調べることができる。
> library(Lahman)
> library(tidyverse)
> tib <- Pitching %>% group_by(playerID) %>%
+ summarize(W = sum(W)) %>%
+ left_join(People, by = "playerID") %>%
+ select(nameFirst, nameLast, W)
> tib %>% arrange(desc(W)) %>%
+ as.data.frame() %>% head(20)
nameFirst nameLast W
1 Cy Young 511
2 Walter Johnson 417
3 Pete Alexander 373
4 Christy Mathewson 373
5 Pud Galvin 365
6 Warren Spahn 363
7 Kid Nichols 362
8 Greg Maddux 355
9 Roger Clemens 354
10 Tim Keefe 342
11 Steve Carlton 329
12 John Clarkson 328
13 Eddie Plank 326
14 Nolan Ryan 324
15 Don Sutton 324
16 Phil Niekro 318
17 Gaylord Perry 314
18 Tom Seaver 311
19 Old Hoss Radbourn 310
20 Mickey Welch 307
投手の通算勝利数の一位はサイ・ヤングの511勝、二位はウォルター・ジョンソンの417勝、三位はピート・アレクサンダーの373勝であることがわかる。参考までに、野茂英雄は以下のとおり123勝。
> tib %>% filter(nameLast == "Nomo") %>% as.data.frame()
nameFirst nameLast W
1 Hideo Nomo 123
イチローの大リーグでの年間打撃成績を調べる
Lahmanデータベースを使うと簡単に調べることができる。
> library(tidyverse)
> library(Lahman)
> plid <- (People %>% filter(nameFirst == "Ichiro"))$playerID
> Batting %>% group_by(playerID) %>% filter(playerID == plid) %>%
+ select(playerID, yearID, teamID, lgID, G, AB, H) %>%
+ as.data.frame()
playerID yearID teamID lgID G AB H
1 suzukic01 2001 SEA AL 157 692 242
2 suzukic01 2002 SEA AL 157 647 208
3 suzukic01 2003 SEA AL 159 679 212
4 suzukic01 2004 SEA AL 161 704 262
5 suzukic01 2005 SEA AL 162 679 206
6 suzukic01 2006 SEA AL 161 695 224
7 suzukic01 2007 SEA AL 161 678 238
8 suzukic01 2008 SEA AL 162 686 213
9 suzukic01 2009 SEA AL 146 639 225
10 suzukic01 2010 SEA AL 162 680 214
11 suzukic01 2011 SEA AL 161 677 184
12 suzukic01 2012 SEA AL 95 402 105
13 suzukic01 2012 NYA AL 67 227 73
14 suzukic01 2013 NYA AL 150 520 136
15 suzukic01 2014 NYA AL 143 359 102
16 suzukic01 2015 MIA NL 153 398 91
17 suzukic01 2016 MIA NL 143 327 95
18 suzukic01 2017 MIA NL 136 196 50
19 suzukic01 2018 SEA AL 15 44 9
20 suzukic01 2019 SEA AL 2 5 0
2012年のシーズンはシーズン途中でマリナーズからヤンキースに移籍しているので、レコードが二つあることに注意。Gは出場試合数。ABは打席数。Hは安打数。
松井秀喜の大リーグでの年間打撃成績を調べる
Lahmanデータベースを使うと簡単に調べることができる。
> library(tidyverse)
> library(Lahman)
> plid <- (People %>% filter(nameFirst == "Hideki" & nameLast == "Matsui"))$playerID
> Batting %>% group_by(playerID) %>% filter(playerID == plid) %>%
+ select(playerID, yearID, teamID, lgID, G, AB, H) %>%
+ as.data.frame()
playerID yearID teamID lgID G AB H
1 matsuhi01 2003 NYA AL 163 623 179
2 matsuhi01 2004 NYA AL 162 584 174
3 matsuhi01 2005 NYA AL 162 629 192
4 matsuhi01 2006 NYA AL 51 172 52
5 matsuhi01 2007 NYA AL 143 547 156
6 matsuhi01 2008 NYA AL 93 337 99
7 matsuhi01 2009 NYA AL 142 456 125
8 matsuhi01 2010 LAA AL 145 482 132
9 matsuhi01 2011 OAK AL 141 517 130
10 matsuhi01 2012 TBA AL 34 95 14