Skip to contents

Fielding table

Usage

data(Fielding)

Format

A data frame with 153656 observations on the following 18 variables.

playerID

Player ID code

yearID

Year

stint

player's stint (order of appearances within a season)

teamID

Team; a factor

lgID

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

POS

Position

G

Games

GS

Games Started

InnOuts

Time played in the field expressed as outs

PO

Putouts

A

Assists

E

Errors

DP

Double Plays

PB

Passed Balls (by catchers)

WP

Wild Pitches (by catchers)

SB

Opponent Stolen Bases (by catchers)

CS

Opponents Caught Stealing (by catchers)

ZR

Zone Rating

Source

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

Examples

data(Fielding)
# Basic fielding data

require("dplyr")


# Roberto Clemente's fielding profile
# pitching and catching related data removed
# subset(Fielding, playerID == "clemero01")[, 1:13]
Fielding %>% 
   filter(playerID == "clemero01") %>%
   select(1:13)
#>     playerID yearID stint teamID lgID POS   G  GS InnOuts  PO  A  E DP
#> 1  clemero01   1955     1    PIT   NL  OF 118 107    2892 253 18  6  5
#> 2  clemero01   1956     1    PIT   NL  2B   2   0      18   1  1  1  0
#> 3  clemero01   1956     1    PIT   NL  3B   1   0       6   0  2  1  0
#> 4  clemero01   1956     1    PIT   NL  OF 139 130    3499 274 17 13  2
#> 5  clemero01   1957     1    PIT   NL  OF 109 107    2836 272  9  6  1
#> 6  clemero01   1958     1    PIT   NL  OF 135 129    3452 312 22  6  3
#> 7  clemero01   1959     1    PIT   NL  OF 104 102    2700 229 10 13  1
#> 8  clemero01   1960     1    PIT   NL  OF 142 140    3767 246 19  8  2
#> 9  clemero01   1961     1    PIT   NL  OF 144 142    3723 256 27  9  5
#> 10 clemero01   1962     1    PIT   NL  OF 142 138    3686 269 19  8  1
#> 11 clemero01   1963     1    PIT   NL  OF 151 148    3943 239 11 11  2
#> 12 clemero01   1964     1    PIT   NL  OF 154 154    4085 289 13 10  2
#> 13 clemero01   1965     1    PIT   NL  OF 145 143    3810 288 16 10  1
#> 14 clemero01   1966     1    PIT   NL  OF 154 153    4147 318 17 12  3
#> 15 clemero01   1967     1    PIT   NL  OF 145 141    3751 273 17  9  4
#> 16 clemero01   1968     1    PIT   NL  OF 131 128    3477 297  9  5  1
#> 17 clemero01   1969     1    PIT   NL  OF 135 128    3372 226 14  5  1
#> 18 clemero01   1970     1    PIT   NL  OF 104 102    2703 189 12  7  2
#> 19 clemero01   1971     1    PIT   NL  OF 124 120    3243 267 11  2  4
#> 20 clemero01   1972     1    PIT   NL  OF  94  88    2436 199  5  0  2
   
# Yadier Molina's fielding profile
# PB, WP, SP and CS apply to catchers
Fielding %>% 
  subset(playerID == "molinya01") %>%
  select(-WP, -ZR)
#>        playerID yearID stint teamID lgID POS   G  GS InnOuts   PO  A  E DP PB
#> 95162 molinya01   2004     1    SLN   NL   C  51  39    1032  256 16  2  1  4
#> 95163 molinya01   2005     1    SLN   NL   C 114 111    2878  684 66  7  4  8
#> 95164 molinya01   2005     1    SLN   NL  1B   1   0       3    0  0  0  0 NA
#> 95165 molinya01   2006     1    SLN   NL   C 127 118    3112  734 79  4  6  7
#> 95166 molinya01   2006     1    SLN   NL  1B   4   0      15    5  0  1  1 NA
#> 95167 molinya01   2007     1    SLN   NL   C 107 101    2584  582 63  6  8  7
#> 95168 molinya01   2007     1    SLN   NL  1B   1   0       3    1  0  0  0 NA
#> 95169 molinya01   2008     1    SLN   NL   C 119 114    3006  653 70 10  7  5
#> 95170 molinya01   2008     1    SLN   NL  1B   2   1      33   13  3  0  1 NA
#> 95171 molinya01   2009     1    SLN   NL   C 138 136    3530  884 82  5  6  4
#> 95172 molinya01   2009     1    SLN   NL  1B   6   0      30   10  1  0  2 NA
#> 95173 molinya01   2010     1    SLN   NL   C 135 130    3414  895 79  5 10  7
#> 95174 molinya01   2010     1    SLN   NL  1B   7   0      21    7  0  0  2 NA
#> 95175 molinya01   2011     1    SLN   NL   C 137 132    3450  857 67  5  5  6
#> 95176 molinya01   2011     1    SLN   NL  1B   2   0       6    3  0  1  0 NA
#> 95177 molinya01   2012     1    SLN   NL   C 136 133    3484  962 88  3 12  6
#> 95178 molinya01   2012     1    SLN   NL  1B   3   0      27   11  2  0  0 NA
#> 95179 molinya01   2013     1    SLN   NL   C 131 129    3346  976 63  4 11  3
#> 95180 molinya01   2013     1    SLN   NL  1B   5   2      54   17  1  0  1 NA
#> 95181 molinya01   2014     1    SLN   NL   C 107 106    2795  810 56  2 10  3
#> 95182 molinya01   2014     1    SLN   NL  1B   1   1      27   10  1  0  0 NA
#> 95183 molinya01   2015     1    SLN   NL   C 134 131    3449 1064 56  7  9  4
#> 95184 molinya01   2016     1    SLN   NL   C 146 142    3655 1113 60  2  5  8
#> 95185 molinya01   2016     1    SLN   NL  1B   2   1      21   10  1  0  0 NA
#> 95186 molinya01   2017     1    SLN   NL   C 133 133    3377 1082 55  7 13  6
#> 95187 molinya01   2017     1    SLN   NL  1B   1   0       6    4  0  0  0 NA
#> 95188 molinya01   2018     1    SLN   NL   C 121 120    3053  966 42  2  8  4
#> 95189 molinya01   2018     1    SLN   NL  1B   5   0      36    9  2  1  3 NA
#> 95190 molinya01   2019     1    SLN   NL   C 111 108    2818  916 30  1  5  4
#> 95191 molinya01   2019     1    SLN   NL  1B   4   0      24    6  0  0  1 NA
#> 95192 molinya01   2019     1    SLN   NL  3B   1   0       3    0  0  0  0 NA
#> 95193 molinya01   2020     1    SLN   NL   C  42  42    1012  307 16  5  1  3
#> 95194 molinya01   2020     1    SLN   NL  1B   2   0      15    3  0  0  0 NA
#> 95195 molinya01   2021     1    SLN   NL   C 118 118    3004  869 49  3 10  6
#> 95196 molinya01   2021     1    SLN   NL  1B   1   0       9    1  1  0  0 NA
#> 95197 molinya01   2022     1    SLN   NL   P   2   0       6    0  0  0  0 NA
#> 95198 molinya01   2022     1    SLN   NL   C  77  71    1885  512 25  3  6  1
#> 95199 molinya01   2022     1    SLN   NL  1B   1   0       3    0  0  0  0 NA
#>       SB CS
#> 95162  9  8
#> 95163 14 25
#> 95164 NA NA
#> 95165 37 29
#> 95166 NA NA
#> 95167 23 27
#> 95168 NA NA
#> 95169 34 18
#> 95170 NA NA
#> 95171 32 22
#> 95172 NA NA
#> 95173 35 33
#> 95174 NA NA
#> 95175 46 19
#> 95176 NA NA
#> 95177 38 35
#> 95178 NA NA
#> 95179 26 20
#> 95180 NA NA
#> 95181 23 21
#> 95182 NA NA
#> 95183 37 26
#> 95184 67 18
#> 95185 NA NA
#> 95186 43 24
#> 95187 NA NA
#> 95188 27 12
#> 95189 NA NA
#> 95190 22  8
#> 95191 NA NA
#> 95192 NA NA
#> 95193  6  5
#> 95194 NA NA
#> 95195 26 18
#> 95196 NA NA
#> 95197 NA NA
#> 95198 20 13
#> 95199 NA NA

# Pedro Martinez's fielding profile
Fielding %>% subset(playerID == "martipe02")
#>        playerID yearID stint teamID lgID POS  G GS InnOuts PO  A E DP PB WP SB
#> 86668 martipe02   1992     1    LAN   NL   P  2  1      24  0  0 0  0 NA NA NA
#> 86669 martipe02   1993     1    LAN   NL   P 65  2     321  4  4 0  1 NA NA NA
#> 86670 martipe02   1994     1    MON   NL   P 24 23     434  9 15 4  0 NA NA NA
#> 86671 martipe02   1995     1    MON   NL   P 30 30     584 14 23 2  0 NA NA NA
#> 86672 martipe02   1996     1    MON   NL   P 33 33     650 11 17 3  1 NA NA NA
#> 86673 martipe02   1997     1    MON   NL   P 31 31     724  7 31 1  1 NA NA NA
#> 86674 martipe02   1998     1    BOS   AL   P 33 33     701 11 18 4  3 NA NA NA
#> 86675 martipe02   1999     1    BOS   AL   P 31 29     640 13 15 1  0 NA NA NA
#> 86676 martipe02   2000     1    BOS   AL   P 29 29     651 14 28 0  2 NA NA NA
#> 86677 martipe02   2001     1    BOS   AL   P 18 18     350  5  5 0  0 NA NA NA
#> 86678 martipe02   2002     1    BOS   AL   P 30 30     598 16 16 2  1 NA NA NA
#> 86679 martipe02   2003     1    BOS   AL   P 29 29     560 14 20 0  0 NA NA NA
#> 86680 martipe02   2004     1    BOS   AL   P 33 33     651 16 16 1  0 NA NA NA
#> 86681 martipe02   2005     1    NYN   NL   P 31 31     651  6 19 0  0 NA NA NA
#> 86682 martipe02   2006     1    NYN   NL   P 23 23     398  7 13 5  0 NA NA NA
#> 86683 martipe02   2007     1    NYN   NL   P  5  5      84  1  0 0  0 NA NA NA
#> 86684 martipe02   2008     1    NYN   NL   P 20 20     327  6 17 0  1 NA NA NA
#> 86685 martipe02   2009     1    PHI   NL   P  9  9     134  1  6 0  1 NA NA NA
#>       CS ZR
#> 86668 NA NA
#> 86669 NA NA
#> 86670 NA NA
#> 86671 NA NA
#> 86672 NA NA
#> 86673 NA NA
#> 86674 NA NA
#> 86675 NA NA
#> 86676 NA NA
#> 86677 NA NA
#> 86678 NA NA
#> 86679 NA NA
#> 86680 NA NA
#> 86681 NA NA
#> 86682 NA NA
#> 86683 NA NA
#> 86684 NA NA
#> 86685 NA NA

# Table of games played by Pete Rose at different positions
with(subset(Fielding, playerID == "rosepe01"), xtabs(G ~ POS))
#> POS
#>   1B   2B   3B   OF 
#>  939  628  634 1327 

# Career total G/PO/A/E/DP for Luis Aparicio
Fielding %>%
    filter(playerID == "aparilu01") %>% 
    select(G, PO, A, E, DP) %>%
    summarise_each(funs(sum))
#> Warning: `summarise_each()` was deprecated in dplyr 0.7.0.
#>  Please use `across()` instead.
#> Warning: `funs()` was deprecated in dplyr 0.8.0.
#>  Please use a list of either functions or lambdas:
#> 
#> # Simple named list: list(mean = mean, median = median)
#> 
#> # Auto named with `tibble::lst()`: tibble::lst(mean, median)
#> 
#> # Using lambdas list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
#>      G   PO    A   E   DP
#> 1 2583 4548 8016 366 1553


# Top ten 2B/SS in turning DPs
Fielding %>%
    subset(POS %in% c("2B", "SS")) %>%
    group_by(playerID) %>%
    summarise(TDP = sum(DP, na.rm = TRUE)) %>%
    arrange(desc(TDP)) %>%
    head(., 10)
#> # A tibble: 10 × 2
#>    playerID    TDP
#>    <chr>     <int>
#>  1 vizquom01  1775
#>  2 mazerbi01  1706
#>  3 foxne01    1619
#>  4 smithoz01  1590
#>  5 ripkeca01  1565
#>  6 aparilu01  1553
#>  7 randowi01  1547
#>  8 whitalo01  1527
#>  9 doerrbo01  1507
#> 10 morgajo02  1505

# League average fielding statistics, 1961-present
Fielding %>% 
   filter(yearID >= 1961 & POS != "DH") %>%
   select(yearID, lgID, POS, InnOuts, PO, A, E) %>%
   group_by(yearID, lgID) %>%
   summarise_at(vars(InnOuts, PO, A, E), funs(sum), na.rm = TRUE) %>%
   mutate(fpct = round( (PO + A)/(PO + A + E), 3), 
          OPE = round(InnOuts/E, 3))
#> Warning: `funs()` was deprecated in dplyr 0.8.0.
#>  Please use a list of either functions or lambdas:
#> 
#> # Simple named list: list(mean = mean, median = median)
#> 
#> # Auto named with `tibble::lst()`: tibble::lst(mean, median)
#> 
#> # Using lambdas list(~ mean(., trim = .2), ~ median(., na.rm = TRUE))
#> # A tibble: 128 × 8
#> # Groups:   yearID [64]
#>    yearID lgID  InnOuts    PO     A     E  fpct   OPE
#>     <int> <fct>   <int> <int> <int> <int> <dbl> <dbl>
#>  1   1961 AL     389523 43213 17237  1506 0.976  259.
#>  2   1961 NL     297720 33080 13728  1167 0.976  255.
#>  3   1962 AL     391878 43449 17138  1364 0.978  287.
#>  4   1962 NL     391206 43470 17832  1555 0.975  252.
#>  5   1963 AL     392877 43589 16998  1347 0.978  292.
#>  6   1963 NL     392946 43661 17681  1577 0.975  249.
#>  7   1964 AL     394593 43774 17130  1261 0.98   313.
#>  8   1964 NL     392094 43566 17933  1586 0.975  247.
#>  9   1965 AL     392562 43546 17231  1359 0.978  289.
#> 10   1965 NL     395384 43932 18008  1486 0.977  266.
#> # ℹ 118 more rows