Skip to contents

Managers table: information about individual team managers, teams they managed and some basic statistics for those teams in each year.

Usage

data(Managers)

Format

A data frame with 4410 observations on the following 10 variables.

playerID

Manager (player) ID code

yearID

Year

teamID

Team; a factor

lgID

League; a factor with levels AA AL FL NL PL UA

inseason

Managerial order. Zero if the individual managed the team the entire year. Otherwise denotes where the manager appeared in the managerial order (1 for first manager, 2 for second, etc.)

G

Games managed

W

Wins

L

Losses

rank

Team's final position in standings that year

plyrMgr

Player Manager (denoted by 'Y'); a factor with levels N Y

Source

Lahman, S. (2026) Lahman's Baseball Database, 1871-2025, 2026 version, https://sabr.org/lahman-database/

Examples

####################################
# Basic career summaries by manager
####################################

library("dplyr")
mgrSumm <- Managers %>%
            group_by(playerID) %>%
            summarise(nyear = length(unique(yearID)),
                      yearBegin = min(yearID),
                      yearEnd = max(yearID),
                      nTeams = length(unique(teamID)),
                      nfirst = sum(rank == 1L),
                      W = sum(W),
                      L = sum(L),
                      WinPct = round(W/(W + L), 3))

MgrInfo <- People %>%
            filter(!is.na(playerID)) %>%
            select(playerID, nameLast, nameFirst)

# Merge names into the table
mgrTotals <- right_join(MgrInfo, mgrSumm, by = "playerID")

# add total games managed
mgrTotals <- mgrTotals %>%
              mutate(games = W + L)

##########################
# Some basic queries
##########################

# Top 20 managers in terms of years of service:
mgrTotals %>%
   arrange(desc(nyear)) %>%
   head(., 20)
#>     playerID  nameLast nameFirst nyear yearBegin yearEnd nTeams nfirst    W
#> 1   mackco01      Mack    Connie    53      1894    1950      2      9 3731
#> 2  larusto01   LaRussa      Tony    35      1979    2022      3     14 2898
#> 3  mcgrajo01    McGraw      John    33      1899    1932      3     11 2763
#> 4    coxbo01       Cox     Bobby    29      1978    2010      2     15 2497
#> 5  harribu01    Harris     Bucky    29      1924    1956      5      3 2158
#> 6  torrejo01     Torre       Joe    29      1977    2010      5     13 2322
#> 7  bochybr01     Bochy     Bruce    28      1995    2025      3      6 2250
#> 8  tayloca99    Taylor Candy Jim    27      1920    1947     15      3 1023
#> 9  andersp01  Anderson    Sparky    26      1970    1995      2      7 2194
#> 10 bakerdu01     Baker     Dusty    26      1993    2023      5     10 2169
#> 11 mauchge01     Mauch      Gene    26      1960    1987      4      2 1902
#> 12 mckecbi01 McKechnie      Bill    25      1915    1946      5      4 1896
#> 13 stengca01   Stengel     Casey    25      1934    1965      4     10 1905
#> 14 durocle01  Durocher       Leo    24      1939    1973      4      3 2008
#> 15 francte01  Francona     Terry    24      1997    2025      4      5 1988
#> 16 mccarjo99  McCarthy       Joe    24      1926    1950      3      9 2125
#> 17 alstowa01    Alston    Walter    23      1954    1976      2      7 2040
#> 18 melvibo01    Melvin       Bob    23      2000    2025      6      4 1682
#> 19 pinielo01  Piniella       Lou    23      1986    2010      5      6 1827
#> 20 wrighha01    Wright     Harry    23      1871    1893      4      6 1225
#>       L WinPct games
#> 1  3948  0.486  7679
#> 2  2509  0.536  5407
#> 3  1948  0.586  4711
#> 4  1999  0.555  4496
#> 5  2219  0.493  4377
#> 6  1995  0.538  4317
#> 7  2265  0.498  4515
#> 8  1070  0.489  2093
#> 9  1834  0.545  4028
#> 10 1858  0.539  4027
#> 11 2037  0.483  3939
#> 12 1723  0.524  3619
#> 13 1842  0.508  3747
#> 14 1709  0.540  3717
#> 15 1705  0.538  3693
#> 16 1333  0.615  3458
#> 17 1613  0.558  3653
#> 18 1592  0.514  3274
#> 19 1709  0.517  3536
#> 20  885  0.581  2110

# Top 20 winningest managers (500 games minimum)
mgrTotals %>%
   filter((W + L) >= 500) %>%
   arrange(desc(WinPct)) %>%
   head(., 20)
#>     playerID   nameLast nameFirst nyear yearBegin yearEnd nTeams nfirst    W
#> 1  harrivi02     Harris       Vic    11      1936    1948      1      8  617
#> 2  fosteru99     Foster      Rube    20      1907    1926      2     11  701
#> 3  roberda07    Roberts      Dave    11      2015    2025      2      9  944
#> 4  mccarjo99   McCarthy       Joe    24      1926    1950      3      9 2125
#> 5  mutriji99     Mutrie       Jim     9      1883    1891      2      3  658
#> 6  comisch01   Comiskey   Charlie    12      1883    1894      3      4  840
#> 7  seleefr99      Selee     Frank    16      1890    1905      2      5 1284
#> 8  southbi01 Southworth     Billy    13      1929    1951      2      4 1044
#> 9  chancfr01     Chance     Frank    11      1905    1923      3      4  946
#> 10 mcgrajo01     McGraw      John    33      1899    1932      3     11 2763
#> 11 booneaa01      Boone     Aaron     8      2018    2025      1      3  697
#> 12 lopezal01      Lopez        Al    17      1951    1969      2      2 1410
#> 13 weaveea99     Weaver      Earl    17      1968    1986      1      6 1480
#> 14 cochrmi01   Cochrane    Mickey     5      1934    1938      1      2  348
#> 15 wrighha01     Wright     Harry    23      1871    1893      4      6 1225
#> 16 ansonca01      Anson       Cap    21      1875    1898      3      5 1296
#> 17  dyered01       Dyer     Eddie     5      1946    1950      1      1  446
#> 18 rowlapa99    Rowland     Pants     4      1915    1918      1      1  339
#> 19 thomsro99    Thomson       Rob     5      2008    2025      2      2  347
#> 20 clarkfr01     Clarke      Fred    19      1897    1915      2      4 1602
#>       L WinPct games
#> 1   303  0.671   920
#> 2   374  0.652  1075
#> 3   576  0.621  1520
#> 4  1333  0.615  3458
#> 5   419  0.611  1077
#> 6   541  0.608  1381
#> 7   862  0.598  2146
#> 8   704  0.597  1748
#> 9   648  0.593  1594
#> 10 1948  0.586  4711
#> 11  496  0.584  1193
#> 12 1004  0.584  2414
#> 13 1060  0.583  2540
#> 14  250  0.582   598
#> 15  885  0.581  2110
#> 16  947  0.578  2243
#> 17  325  0.578   771
#> 18  247  0.578   586
#> 19  253  0.578   600
#> 20 1181  0.576  2783

# Most of these are 19th century managers.
# How about the modern era?
mgrTotals %>%
   filter(yearBegin >= 1901 & (W + L) >= 500) %>%
   arrange(desc(WinPct)) %>%
   head(., 20)
#>     playerID   nameLast nameFirst nyear yearBegin yearEnd nTeams nfirst    W
#> 1  harrivi02     Harris       Vic    11      1936    1948      1      8  617
#> 2  fosteru99     Foster      Rube    20      1907    1926      2     11  701
#> 3  roberda07    Roberts      Dave    11      2015    2025      2      9  944
#> 4  mccarjo99   McCarthy       Joe    24      1926    1950      3      9 2125
#> 5  southbi01 Southworth     Billy    13      1929    1951      2      4 1044
#> 6  chancfr01     Chance     Frank    11      1905    1923      3      4  946
#> 7  booneaa01      Boone     Aaron     8      2018    2025      1      3  697
#> 8  lopezal01      Lopez        Al    17      1951    1969      2      2 1410
#> 9  weaveea99     Weaver      Earl    17      1968    1986      1      6 1480
#> 10 cochrmi01   Cochrane    Mickey     5      1934    1938      1      2  348
#> 11  dyered01       Dyer     Eddie     5      1946    1950      1      1  446
#> 12 rowlapa99    Rowland     Pants     4      1915    1918      1      1  339
#> 13 thomsro99    Thomson       Rob     5      2008    2025      2      2  347
#> 14 duncafr02     Duncan     Frank     6      1942    1947      1      2  337
#> 15 welchwi01      Welch  Winfield     6      1941    1948      2      1  300
#> 16  snowfe01       Snow    Felton     8      1939    1947      2      0  331
#> 17 johnsda02    Johnson     Davey    17      1984    2013      5      6 1369
#> 18 moranpa01      Moran       Pat     9      1915    1923      2      2  748
#> 19 shildmi99     Shildt      Mike     6      2018    2025      2      1  435
#> 20 oneilst01    O'Neill     Steve    14      1935    1954      4      1 1040
#>       L WinPct games
#> 1   303  0.671   920
#> 2   374  0.652  1075
#> 3   576  0.621  1520
#> 4  1333  0.615  3458
#> 5   704  0.597  1748
#> 6   648  0.593  1594
#> 7   496  0.584  1193
#> 8  1004  0.584  2414
#> 9  1060  0.583  2540
#> 10  250  0.582   598
#> 11  325  0.578   771
#> 12  247  0.578   586
#> 13  253  0.578   600
#> 14  257  0.567   594
#> 15  229  0.567   529
#> 16  255  0.565   586
#> 17 1070  0.561  2439
#> 18  586  0.561  1334
#> 19  340  0.561   775
#> 20  821  0.559  1861

# Top 10 managers in terms of percentage of titles 
# (league or divisional) - should bias toward managers
#  post-1970 since more first place finishes are available
mgrTotals %>%
   filter(yearBegin >= 1901 & (W + L) >= 500) %>%
   arrange(desc(round(nfirst/nyear, 3))) %>%
   head(., 10)
#>     playerID nameLast nameFirst nyear yearBegin yearEnd nTeams nfirst    W    L
#> 1  roberda07  Roberts      Dave    11      2015    2025      2      9  944  576
#> 2  dierkla01  Dierker     Larry     5      1997    2001      1      4  435  348
#> 3  harrivi02   Harris       Vic    11      1936    1948      1      8  617  303
#> 4  howsedi01   Howser      Dick     8      1978    1986      2      5  507  425
#> 5   freyji99     Frey       Jim     5      1980    1986      2      3  323  287
#> 6  fosteru99   Foster      Rube    20      1907    1926      2     11  701  374
#> 7    coxbo01      Cox     Bobby    29      1978    2010      2     15 2497 1999
#> 8  banisje01 Banister      Jeff     4      2015    2018      1      2  325  313
#> 9  brenlbo01   Brenly       Bob     4      2001    2004      1      2  303  262
#> 10 kenneke99  Kennedy     Kevin     4      1993    1996      2      2  309  273
#>    WinPct games
#> 1   0.621  1520
#> 2   0.556   783
#> 3   0.671   920
#> 4   0.544   932
#> 5   0.530   610
#> 6   0.652  1075
#> 7   0.555  4496
#> 8   0.509   638
#> 9   0.536   565
#> 10  0.531   582

# How about pre-1969?
mgrTotals %>%
  filter(yearBegin >= 1901 & yearEnd <= 1969 &
          (W + L) >= 500) %>%
  arrange(desc(round(nfirst/nyear, 3))) %>%
  head(., 10)
#>     playerID nameLast  nameFirst nyear yearBegin yearEnd nTeams nfirst    W
#> 1  harrivi02   Harris        Vic    11      1936    1948      1      8  617
#> 2  fosteru99   Foster       Rube    20      1907    1926      2     11  701
#> 3  cochrmi01 Cochrane     Mickey     5      1934    1938      1      2  348
#> 4  stengca01  Stengel      Casey    25      1934    1965      4     10 1905
#> 5  lloydpo99    Lloyd John Henry    18      1911    1931      9      7  426
#> 6  mccarjo99 McCarthy        Joe    24      1926    1950      3      9 2125
#> 7  chancfr01   Chance      Frank    11      1905    1923      3      4  946
#> 8  huggimi01  Huggins     Miller    17      1913    1929      2      6 1413
#> 9  colliji01  Collins      Jimmy     6      1901    1906      1      2  455
#> 10 duncafr02   Duncan      Frank     6      1942    1947      1      2  337
#>       L WinPct games
#> 1   303  0.671   920
#> 2   374  0.652  1075
#> 3   250  0.582   598
#> 4  1842  0.508  3747
#> 5   361  0.541   787
#> 6  1333  0.615  3458
#> 7   648  0.593  1594
#> 8  1134  0.555  2547
#> 9   376  0.548   831
#> 10  257  0.567   594

## Tony LaRussa's managerial record by team
Managers %>%
  filter(playerID == "larusto01") %>%
  group_by(teamID) %>%
  summarise(nyear = length(unique(yearID)),
            yearBegin = min(yearID),
            yearEnd = max(yearID),
            games = sum(G),
            nfirst = sum(rank == 1L),
            W = sum(W),
            L = sum(L),
            WinPct = round(W/(W + L), 3))
#> # A tibble: 3 × 9
#>   teamID nyear yearBegin yearEnd games nfirst     W     L WinPct
#>   <fct>  <int>     <int>   <int> <int>  <int> <int> <int>  <dbl>
#> 1 CHA       10      1979    2022  1357      2   695   659  0.513
#> 2 OAK       10      1986    1995  1471      4   798   673  0.542
#> 3 SLN       16      1996    2011  2582      8  1405  1177  0.544

##############################################
# Density plot of the number of games managed:
##############################################

library("ggplot2")

ggplot(mgrTotals, aes(x = games)) + 
    geom_density(fill = "red", alpha = 0.3) +
    labs(x = "Number of games managed")


# Who managed more than 4000 games?
mgrTotals %>% 
  filter(W + L >= 4000) %>%
  arrange(desc(W + L))
#>    playerID nameLast nameFirst nyear yearBegin yearEnd nTeams nfirst    W    L
#> 1  mackco01     Mack    Connie    53      1894    1950      2      9 3731 3948
#> 2 larusto01  LaRussa      Tony    35      1979    2022      3     14 2898 2509
#> 3 mcgrajo01   McGraw      John    33      1899    1932      3     11 2763 1948
#> 4 bochybr01    Bochy     Bruce    28      1995    2025      3      6 2250 2265
#> 5   coxbo01      Cox     Bobby    29      1978    2010      2     15 2497 1999
#> 6 harribu01   Harris     Bucky    29      1924    1956      5      3 2158 2219
#> 7 torrejo01    Torre       Joe    29      1977    2010      5     13 2322 1995
#> 8 andersp01 Anderson    Sparky    26      1970    1995      2      7 2194 1834
#> 9 bakerdu01    Baker     Dusty    26      1993    2023      5     10 2169 1858
#>   WinPct games
#> 1  0.486  7679
#> 2  0.536  5407
#> 3  0.586  4711
#> 4  0.498  4515
#> 5  0.555  4496
#> 6  0.493  4377
#> 7  0.538  4317
#> 8  0.545  4028
#> 9  0.539  4027
# Connie Mack's advantage: he owned the Philadelphia A's :)

# Table of Tony LaRussa's team finishes (rank order):
Managers %>%
   filter(playerID == "larusto01") %>%
   count(rank)
#>   rank  n
#> 1    1 14
#> 2    2  4
#> 3    3  8
#> 4    4  5
#> 5    5  4
#> 6    7  1



##############################################
# Scatterplot of winning percentage vs. number 
# of games managed (min 100)
##############################################

ggplot(subset(mgrTotals, yearBegin >= 1900 & games >= 100),
       aes(x = games, y = WinPct)) + 
  geom_point() + geom_smooth() +
  labs(x = "Number of games managed")
#> `geom_smooth()` using method = 'loess' and formula = 'y ~ x'


############################################
# Division titles
############################################

# Plot of number of first place finishes by managers who
# started in the divisional era (>= 1969) with 
# at least 8 years of experience

mgrTotals %>% 
  filter(yearBegin >= 1969 & nyear >= 8) %>%
  ggplot(., aes(x = nyear, y = nfirst)) +
     geom_point(position = position_jitter(width = 0.2)) +
     labs(x = "Number of years", 
          y = "Number of divisional titles") +
     geom_smooth()
#> `geom_smooth()` using method = 'loess' and formula = 'y ~ x'



# Change response to proportion of titles relative
# to years managed
mgrTotals %>% 
  filter(yearBegin >= 1969 & nyear >= 8) %>%
  ggplot(., aes(x = nyear, y = round(nfirst/nyear, 3))) +
     geom_point(position = position_jitter(width = 0.2)) +
     labs(x = "Number of years", 
          y = "Proportion of divisional titles") +
     geom_smooth()
#> `geom_smooth()` using method = 'loess' and formula = 'y ~ x'