f1pits-intro"

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>",
  fig.width = 5,       # ancho en pulgadas
  fig.height = 2.5,       # alto en pulgadas
  dpi = 120             # resolution
)
library(f1pits)

Vignette Info. Introduction:

The f1pits package provides datasets of Formula 1 race pit stops (since 2019), extracted from DHL website and a function to visualize pit stop data.

This package can be considered complementary to the f1dataR package, which provides Formula 1 race data. You can download f1pits package in GitHub.

Exemple to use:

Step 1: Pit Stops data

To extract the pit stop data for a specific race or an entire season, use the pits() function. Check the documentation for the different arguments of the function.

# Accessing the data, for example, round 1, Australian GP 2026:

pits(1, 2026) -> pitdata

pitdata

The output generated is a tibble containing the columns:

Pos. (position according to pit stop time), Team, Driver, Time (sec) is the time (in seconds) of each pitstop, Lap (lap of the race; does NOT include sprint sessions), and Points (DHL points. If a driver makes more than one pit stop among the top 10 fastest, the second and subsequent pit stops by that driver do not receive points).

Step 2: ELO team calculations

You can calculate ELO ratings of each team from a pit stop dataset, using a single race or multiple races from the one or different seasons with pitelo() function.

pitelo(pitdata)

The ELO calculation is the mean, median, or minimum pit stop position of the teams in each race (see stat_fun argument). On the other hand, two methodologies can be applied for ELO calculation: sequential or batch (see calc argument).

Also you can adjust the magnitude of the ELO change per race (k) and the scaling factors (c and d). The default values in pitelo() are based on Hvattum and Arntzen (2010).

pitelo(pitdata, stat_fun = 3, calc = 2, k = 40, c = 20, d = 1000)

The different names that the same F1 team structure has had over the years will be collapsed by default into the last used in the dataset, for example: Toro Rosso (2019) → AlphaTauri (2020-2023) → RB (2024) → Racing Bulls (2025-2026).

pits(1, 2024) -> pitdata24

pits(1, 2025) -> pitdata25

# Join datasets:
pitdata_multiple <- dplyr::bind_rows(pitdata, pitdata24, pitdata25)

# Show all teams in dataset:
unique(pitdata_multiple$Team)

pitelo(pitdata_multiple, fml = TRUE)

pitelo(pitdata_multiple, fml = FALSE)

Additionally, you can provide your own ELO rating to initialize the calculations in the function (MUST have the same structure type as in this example).

# Create an ELO tibble with a starting value of 1000 for all teams, except Cadillac.
# As a new team it will be slightly penalized 
# because its team structure is completely new.

elo_data <- tibble::tibble(
    Team = c("Ferrari", "Red Bull", "Mercedes", "Racing Bulls", "McLaren",
             "Haas", "Alpine", "Williams", "Audi", "Aston Martin", "Cadillac"),
    Rating = c(1000, 1000, 1000, 1000, 1000,
               1000, 1000, 1000, 1000, 1000, 950))

elo_data

str(elo_data)

pitelo(pitdata, elo = elo_data)

Step 3 (if you want): Plotting

The f1pits package includes the pitplot() function, which takes the data obtained from pits() and produces a ggplot object to visualize pit stop performance. Remember that if you want to provide your own data, the input must be a tibble (see the documentation of pits()). Check the documentation for the different arguments of pitplot() before using it.

# Plotting the data:

pitplot(pitdata, 2) -> pitplot_pitdata

pitplot_pitdata

Finally, if you want a fun text for your plot, run the pitart() function in the title_text argument:

pitplot(pitdata, 2, title_text = paste0(pitart(3), "    Pit Stop data")) -> pitplot_pitdata_title_edit

pitplot_pitdata_title_edit

Citation

This package makes extensive use of 'dplyr' for data manipulation and 'ggplot2' for plotting the data. 'httr' and 'jsonlite' also to access my repository data. 'f1dataR' has inspired me to create this package as a complement.


r format(citation("f1pits"))



Try the f1pits package in your browser

Any scripts or data that you put into this service are public.

f1pits documentation built on May 20, 2026, 5:07 p.m.