Created
August 31, 2014 02:02
-
-
Save bayesball/233ace6283318dadc23a to your computer and use it in GitHub Desktop.
Adjusted Range Factors for MLB 2nd Basemen
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| library(Lahman) | |
| library(dplyr) | |
| fielding.2b <- filter(Fielding, POS=="2B", yearID >= 1960) | |
| rf.season.2b <- summarize(group_by(fielding.2b, yearID), | |
| RF.9 = 9 * (sum(PO, na.rm=TRUE) + | |
| sum(A, na.rm=TRUE)) / | |
| (sum(InnOuts / 3, na.rm=TRUE))) | |
| library(ggplot2) | |
| ggplot(rf.season.2b, aes(yearID, RF.9)) + geom_point() + | |
| geom_smooth(span=.2, method="loess") | |
| fielding.2b <- summarize(group_by(fielding.2b, playerID, yearID), | |
| PO = sum(PO), A = sum(A), | |
| InnOuts = sum(InnOuts)) | |
| summary.2b <- summarize(group_by(fielding.2b, playerID), | |
| PO.A = sum(PO) + sum(A)) | |
| fielding.2b <- merge(fielding.2b, summary.2b, | |
| by="playerID") | |
| fielding.2b <- filter(fielding.2b, PO.A >= 1000) | |
| fielding.2b <- mutate(fielding.2b, | |
| Range = 9 * (PO + A) / (InnOuts / 3)) | |
| fielding.2b <- merge(fielding.2b, rf.season.2b, by="yearID") | |
| fielding.2b <- mutate(fielding.2b, | |
| Adj.Range = Range / RF.9) | |
| head(fielding.2b) | |
| plot.range <- function(name){ | |
| N <- strsplit(name, " ")[[1]] | |
| pid <- filter(Master, | |
| nameFirst==N[1], | |
| nameLast==N[2])$playerID | |
| player.data <- filter(fielding.2b, playerID==pid) | |
| print(ggplot(player.data, aes(yearID, Adj.Range)) + | |
| geom_point(size=4, color="red") + | |
| geom_smooth(method="loess", size=2) + | |
| geom_hline(yintercept=1, size=2, color="brown") + | |
| labs(title=name) + | |
| theme(plot.title = element_text(size = rel(3)))) | |
| } | |
| plot.range("Chase Utley") | |
| plot.range("Joe Morgan") | |
| plot.range("Craig Biggio") | |
| plot.range("Bobby Grich") | |
| plot.range("Jose Oquendo") | |
| plot.range("Manny Trillo") | |
| plot.range("Frank White") | |
| plot.range("Willie Randolph") | |
| plot.range("Harold Reynolds") | |
| plot.range("Glenn Hubbard") | |
| plot.range("Bill Mazeroski") | |
| plot.range("Ryne Sandberg") | |
| plot.range("Roberto Alomar") | |
| plot.range("Jeff Kent") | |
| plot.range("Lou Whitaker") | |
| plot.range("Dan Uggla") | |
| plot.range("Robinson Cano") | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment