Descripción del paquete: Proporciona tablas de la “Base de datos de béisbol Sean Lahman”, ofrece una variedad de desafíos interesantes y oportunidades para el procesamiento y visualización de datos en R.. Utiliza los datos de pitcheo, bateo y fielding, entre otras como de rendimiento y otras tablas desde 1871 hasta 2015, según lo registrado en el 2016 Versión de la base de datos.
Esta base de datos contiene estadísticas de lanzamiento, bateo y fildeo para las Grandes Ligas de Béisbol desde 1871 hasta el 2016. Incluye datos de las dos ligas actuales (estadounidense y nacional), las otras cuatro ligas principales (Asociación Americana, Asociación Sindical, Liga de Jugadores y Liga Federal), y la Asociación Nacional de 1871-1875. Fue creada por Sean Lahman, quien fue pionero en el esfuerzo por hacer estadísticas de béisbol. Libre acceso al público en general. Lo que comenzó como un esfuerzo de un solo hombre en 1994 ha crecido enormemente, y ahora un equipo de investigadores ha reunido sus esfuerzos para hacer de este el más grande. En la versión actual, los ejemplos hacen un uso extensivo del paquete dplyr para la manipulación de datos (tabulación, consultas, resúmenes, fusión, etc.), que refleja el diseño de la base de datos relacional original y ggplot2 para gráficos.
La forma principal de esta base de datos es una base de datos relacionada en formato de Microsoft Access. El diseño sigue estos principios generales: A cada jugador se le asigna un código único (ID de jugador). Toda la información está relacionada en otras tablas con ese jugador y está etiquetada con su ID de jugador. Entonces todos los ID están vinculados a nombres y fechas de nacimiento en la tabla principal. La base de datos se compone de las siguientes tablas principales:
1. Data(master):19105 observaciones con 26 variables que consta de nombres de jugadores, fecha de nacimiento e información biográfica. Este archivo se usa para obtener detalles sobre jugadores enumerados en Batting, Pitching y otros archivos donde los jugadores son identificados solo por jugadorID, también hay variables como peso del jugador en libras, altura del jugador en pulgadas, cuidad dónde murió el jugador, estado dónde murió el jugador.
2. Data(batting): 102,816 observaciones con 22 variables que consta de: número de juegos en los que un jugador jugó, homeruns, golpe por lanzamiento.
3. Data(pitching): 44,963 observaciones con 30 variables que consta de: juegos completos, perdidos, ganados, comenzados.
4. Data (fielding): 136,815 observaciones con 18 variables que consta de: posición, juegos, errores, clasificación de la zona.También se proporciona una colección de otras tablas que a continuación se desarrollan brevemente:
1. Data(Teams): Estadísticas y posiciones anuales de los equipos: 2835 observaciones con 48 variables como por ejemplo: año, posición de la clasificación final, juegos jugados, juegos jugados en casa, juegos ganados, juegos perdidos, bases robadas.
2. Data (TeamsHalf): Datos de la temporada de los equipos: 52 observaciones con 10 variables como por ejemplo: año, división, juegos jugados, primera o segunda mitad de la temporada, liga.
3. Data (TeamsFranchises): Información sobre franquicias de equipos: 120 observaciones con 4 variables como por ejemplo: ID franquicia, nombre de la franquicia, si el equipo está actualmente activo (S o N), identificación de la franquicia del equipo de la Asociación Nacional jugado como…
1. Data (battingpost): 13,543 observaciones con 22 variables como por ejemplo, bases robadas, base en bolas, strikeouts, intentional walks, hit by pitch.
2. Data (pitchingpost): 5,271 observaciones con 30 variables como por ejemplo, juegos comenzados, juegos completos, homeruns, strikeouts.
3. Data (Fieldingpost): 12,714 observaciones con 17 variables como por ejemplo: posición, juegos, errores, putouts.
4. Data (Seriespost): 316 observaciones con 9 variables como por ejemplo, equipo que ganó la serie, liga que ganó la serie, equipo que perdió la serie, liga que perdió la serie.
1. Data (AwardsManager): 179 observaciones con 6 variables que consta de: ID del gerente, nombre del premio ganado, año, el premio fue empate (S o N).
2. Data (AwardsPlayers): 6,158 observaciones con 6 variables: ID del jugador, nombre del premio ganado, año, notas sobre el premio, premio fue empate (S o N).
3. Data (AwardsSharemanagers): 425 observaciones con 7 variables: año, ID del gerente, número de puntos recibidos, número máximo de puntos posibles, número de votos en primer lugar.
4. Data (AwardsShareplayers): 6,879 observaciones con 7 variables: año ID del jugador, número de puntos recibidos, número máximo de puntos posibles, número de votos en primer lugar.
Cuando instale el paquete, igual no verá nada pero la informacón ya esta disponible. Como una introducción, las primeras filas de la tabla maestra (Data(master)) se pueden ver usando la siguiente función.
library(Lahman)
head(Master)
## playerID birthYear birthMonth birthDay birthCountry birthState
## 1 aardsda01 1981 12 27 USA CO
## 2 aaronha01 1934 2 5 USA AL
## 3 aaronto01 1939 8 5 USA AL
## 4 aasedo01 1954 9 8 USA CA
## 5 abadan01 1972 8 25 USA FL
## 6 abadfe01 1985 12 17 D.R. La Romana
## birthCity deathYear deathMonth deathDay deathCountry deathState
## 1 Denver NA NA NA <NA> <NA>
## 2 Mobile NA NA NA <NA> <NA>
## 3 Mobile 1984 8 16 USA GA
## 4 Orange NA NA NA <NA> <NA>
## 5 Palm Beach NA NA NA <NA> <NA>
## 6 La Romana NA NA NA <NA> <NA>
## deathCity nameFirst nameLast nameGiven weight height bats throws
## 1 <NA> David Aardsma David Allan 215 75 R R
## 2 <NA> Hank Aaron Henry Louis 180 72 R R
## 3 Atlanta Tommie Aaron Tommie Lee 190 75 R R
## 4 <NA> Don Aase Donald William 190 75 R R
## 5 <NA> Andy Abad Fausto Andres 184 73 L L
## 6 <NA> Fernando Abad Fernando Antonio 220 73 L L
## debut finalGame retroID bbrefID deathDate birthDate
## 1 2004-04-06 2015-08-23 aardd001 aardsda01 <NA> 1981-12-27
## 2 1954-04-13 1976-10-03 aaroh101 aaronha01 <NA> 1934-02-05
## 3 1962-04-10 1971-09-26 aarot101 aaronto01 1984-08-16 1939-08-05
## 4 1977-07-26 1990-10-03 aased001 aasedo01 <NA> 1954-09-08
## 5 2001-09-10 2006-04-13 abada001 abadan01 <NA> 1972-08-25
## 6 2010-07-28 2016-09-25 abadf001 abadfe01 <NA> 1985-12-17
A continuación haremos algunos ejemplos para mostrar datos que contiene este paquete.
data(AwardsPlayers)
# Que tipo de premios hay y cuantas veces se han dado
with(AwardsPlayers, table(awardID))
## awardID
## ALCS MVP All-Star Game MVP
## 36 55
## Babe Ruth Award Baseball Magazine All-Star
## 64 1520
## Branch Rickey Award Comeback Player of the Year
## 23 24
## Cy Young Award Gold Glove
## 112 1073
## Hank Aaron Award Hutch Award
## 36 48
## Lou Gehrig Memorial Award Most Valuable Player
## 57 194
## NLCS MVP Outstanding DH Award
## 41 1
## Pitching Triple Crown Reliever of the Year Award
## 38 2
## Roberto Clemente Award Rolaids Relief Man Award
## 47 74
## Rookie of the Year Silver Slugger
## 140 667
## Triple Crown TSN All-Star
## 17 1371
## TSN Fireman of the Year TSN Guide MVP
## 88 33
## TSN Major League Player of the Year TSN Pitcher of the Year
## 82 137
## TSN Player of the Year TSN Reliever of the Year
## 92 22
## World Series MVP
## 64
awardtab <- with(AwardsPlayers, table(awardID))
# Dibuje la tabla awardtab como un diagrama de puntos
library("lattice")
dotplot(awardtab)
A continuacion hago una consulta y muestro a los jugadores que ganaron el premio Cy Young en 1981 y resalto al jugador mexicano Fernando Valenzuela.
# Muestro al jugador Fernando Valenzuela uno de los dos ganadores de Cy Young
cya <- subset(AwardsPlayers, awardID == "Cy Young Award")
# Quien gano en 1981?
cya[cya$yearID == 1981L, ]
## playerID awardID yearID lgID tie notes
## 3441 fingero01 Cy Young Award 1981 AL <NA> <NA>
## 3442 valenfe01 Cy Young Award 1981 NL <NA> <NA>
playerscya <- cya[cya$yearID == 1981L, ]
playerInfo(playerscya[2,"playerID"])
## playerID nameFirst nameLast
## 17625 valenfe01 Fernando Valenzuela
library(Lahman)
library(plyr)
require(plyr)
# Salario por liga, equipo y año
teamSalaries <- ddply(Salaries, .(lgID, teamID, yearID), summarise,
Salary = sum(as.numeric(salary)))
# Salrio ordenados en forma decreciente
teamSalaries <- ddply(teamSalaries, .(yearID, lgID), arrange, desc(Salary))
# Mejores salarios por año desde 1985
maxSal <- ddply(Salaries, .(yearID), subset, salary == max(salary))
names <- apply(t(sapply(maxSal$playerID, playerInfo))[,2:3], 2, paste)
maxSal <- cbind(maxSal, names)
maxSal
## yearID teamID lgID playerID salary nameFirst nameLast
## 1 1985 PHI NL schmimi01 2130300 Mike Schmidt
## 2 1986 NYN NL fostege01 2800000 George Foster
## 3 1987 PHI NL schmimi01 2127333 Mike Schmidt
## 4 1988 SLN NL smithoz01 2340000 Ozzie Smith
## 5 1989 LAN NL hershor01 2766667 Orel Hershiser
## 6 1990 ML4 AL yountro01 3200000 Robin Yount
## 7 1991 LAN NL strawda01 3800000 Darryl Strawberry
## 8 1992 NYN NL bonilbo01 6100000 Bobby Bonilla
## 9 1993 NYN NL bonilbo01 6200000 Bobby Bonilla
## 10 1994 NYN NL bonilbo01 6300000 Bobby Bonilla
## 11 1995 DET AL fieldce01 9237500 Cecil Fielder
## 12 1996 DET AL fieldce01 9237500 Cecil Fielder
## 13 1997 CHA AL belleal01 10000000 Albert Belle
## 14 1998 FLO NL sheffga01 14936667 Gary Sheffield
## 15 1999 BAL AL belleal01 11949794 Albert Belle
## 16 2000 LAN NL brownke01 15714286 Kevin Brown
## 17 2001 TEX AL rodrial01 22000000 Alex Rodriguez
## 18 2002 TEX AL rodrial01 22000000 Alex Rodriguez
## 19 2003 TEX AL rodrial01 22000000 Alex Rodriguez
## 20 2004 BOS AL ramirma02 22500000 Manny Ramirez
## 21 2005 NYA AL rodrial01 26000000 Alex Rodriguez
## 22 2006 NYA AL rodrial01 21680727 Alex Rodriguez
## 23 2007 NYA AL giambja01 23428571 Jason Giambi
## 24 2008 NYA AL rodrial01 28000000 Alex Rodriguez
## 25 2009 NYA AL rodrial01 33000000 Alex Rodriguez
## 26 2010 NYA AL rodrial01 33000000 Alex Rodriguez
## 27 2011 NYA AL rodrial01 32000000 Alex Rodriguez
## 28 2012 NYA AL rodrial01 30000000 Alex Rodriguez
## 29 2013 NYA AL rodrial01 29000000 Alex Rodriguez
## 30 2014 LAN NL greinza01 26000000 Zack Greinke
## 31 2015 LAN NL kershcl01 32571000 Clayton Kershaw
## 32 2016 LAD NL kershcl01 33000000 Clayton Kershaw
#Grafica Salario vs Año
plot(salary/100000 ~ yearID, data=maxSal, type='b', ylab='Salario Dolares (100,000$)', xlab = 'Año')