2.3 Data Frames

library(abdwr3edata)

spahn |> 
  dplyr::slice(1:3) |> 
  dplyr::select(1:10)
## # A tibble: 3 × 10
##    Year   Age Tm    Lg        W     L    W.L   ERA     G    GS
##   <dbl> <dbl> <chr> <chr> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl>
## 1  1942    21 BSN   NL        0     0 NA      5.74     4     2
## 2  1946    25 BSN   NL        8     5  0.615  2.94    24    16
## 3  1947    26 BSN   NL       21    10  0.677  2.33    40    35
spahn[1:3, 1:10]
## # A tibble: 3 × 10
##    Year   Age Tm    Lg        W     L    W.L   ERA     G    GS
##   <dbl> <dbl> <chr> <chr> <dbl> <dbl>  <dbl> <dbl> <dbl> <dbl>
## 1  1942    21 BSN   NL        0     0 NA      5.74     4     2
## 2  1946    25 BSN   NL        8     5  0.615  2.94    24    16
## 3  1947    26 BSN   NL       21    10  0.677  2.33    40    35

2.3.1 Manipulations with Data

FIP

spahn <- spahn |> 
  dplyr::mutate(FIP = (13 * HR + 3 * BB - 2 * SO) / IP)

spahn |> 
  dplyr::arrange(FIP) |> 
  dplyr::select(Year, Age, W, L, ERA, FIP) |>
  dplyr::slice_head(n = 5)
## # A tibble: 5 × 6
##    Year   Age     W     L   ERA   FIP
##   <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1  1952    31    14    19  2.98 0.345
## 2  1953    32    23     7  2.1  0.362
## 3  1946    25     8     5  2.94 0.415
## 4  1959    38    21    15  2.96 0.675
## 5  1947    26    21    10  2.33 0.695

What do you notice about Spahn’s FIP?

FIP from Fangraphs
FIP from Fangraphs

Fangraphs library

Fangraphs FIP constants

You can combine data with joins.

batting <- dplyr::bind_rows(NLbatting, ALbatting)

dplyr::dim_desc(NLbatting)
## [1] "[16 x 28]"
dplyr::dim_desc(ALbatting)
## [1] "[14 x 28]"
dplyr::dim_desc(batting)
## [1] "[30 x 28]"
NL <- dplyr::inner_join(NLbatting, NLpitching, by = "Tm")
dplyr::dim_desc(NLpitching)
## [1] "[16 x 34]"
dplyr::dim_desc(NLbatting)
## [1] "[16 x 28]"
dplyr::dim_desc(NL)
## [1] "[16 x 61]"