| Title: | Olympic Athlete Event Data, Athens 1896 to Milano-Cortina 2026 |
|---|---|
| Description: | A tidy, long-format dataset of every athlete-event participation in the modern Olympic Games, spanning Athens 1896 through Milano-Cortina 2026 (about 315,000 rows). Extends the rgriff23 'Olympic_history' dataset (1896-2016) with five additional editions scraped from Olympedia (<https://www.olympedia.org>): PyeongChang 2018, Tokyo 2020, Beijing 2022, Paris 2024, and Milano-Cortina 2026. Companion datasets cover edition-level metadata and verified medal tables for every edition from 1896 to 2026. |
| Authors: | Chester Ismay [aut, cre] |
| Maintainer: | Chester Ismay <[email protected]> |
| License: | CC BY 4.0 |
| Version: | 0.5.10 |
| Built: | 2026-10-04 10:00:03 UTC |
| Source: | https://github.com/moderndive/olympicathletes |
The subset of olympic_athletes with
sport == "Art Competitions": the painters, sculptors, writers,
musicians, and architects who won Olympic medals when the arts were medal
events. A convenience dataset for exploring how these entrants differ from
athletic competitors (notably in age). Columns are identical to
olympic_athletes.
art_competitions_athletesart_competitions_athletes
A data frame with 3,578 rows and 16 variables; see
olympic_athletes for the full column descriptions.
See olympic_athletes.
data(art_competitions_athletes) head(art_competitions_athletes)data(art_competitions_athletes) head(art_competitions_athletes)
The subset of olympic_athletes with sport == "Athletics".
A convenience dataset so examples can focus on a single sport without first
filtering. Columns are identical to olympic_athletes.
athletics_athletesathletics_athletes
A data frame with 43,062 rows and 16 variables; see
olympic_athletes for the full column descriptions.
See olympic_athletes.
data(athletics_athletes) head(athletics_athletes)data(athletics_athletes) head(athletics_athletes)
The subset of olympic_athletes with sport == "Basketball".
A convenience dataset so examples can focus on a single sport without first
filtering. Columns are identical to olympic_athletes.
basketball_athletesbasketball_athletes
A data frame with 5,159 rows and 16 variables; see
olympic_athletes for the full column descriptions.
See olympic_athletes.
data(basketball_athletes) head(basketball_athletes)data(basketball_athletes) head(basketball_athletes)
The subset of olympic_athletes with sport == "Curling".
A convenience dataset so examples can focus on a single sport without first
filtering. Columns are identical to olympic_athletes.
curling_athletescurling_athletes
A data frame with 961 rows and 16 variables; see
olympic_athletes for the full column descriptions.
See olympic_athletes.
data(curling_athletes) head(curling_athletes)data(curling_athletes) head(curling_athletes)
One row per Olympic edition (including cancelled Games) with verified totals for participants, NOCs, medal events, and disciplines, plus opening/closing ceremony dates.
editionseditions
A data frame with 62 rows and 15 variables:
Integer. Olympedia's internal edition number.
Character. e.g. "2024 Summer".
Integer.
Character. "Summer" or "Winter".
Character. Host city in the local-language
form rendered in the Latin alphabet, i.e. native Latin-script
names retain their diacritics ("Athína", "München",
"Montréal", "Ciudad de México"), and non-Latin-script
names use a standard romanization rather than the city's native
script ("Moskva", "Tokyo", "Beijing",
"PyeongChang"). The column is therefore
always ASCII-or-Latin-1 and never contains the city's
native non-Latin alphabet.
Character. Common English name of the host city
(e.g. "Athens", "Munich", "Moscow",
"Mexico City").
Character.
Date or NA. ISO-8601.
NA for cancelled editions and a few early Games where
Olympedia does not record exact dates.
Integer or NA. Olympedia's headline
participant count. NA for cancelled editions.
Integer or NA. Number of NOCs represented.
Integer or NA. Number of medal events.
Integer or NA. Number of distinct disciplines.
Character. Free-text edition notes (e.g. cancellation reasons, intercalated-Games status).
Character. Olympedia URL.
data(editions) editions[, c("games", "city_local_latin", "city_english", "participants", "medal_events")]data(editions) editions[, c("games", "city_local_latin", "city_english", "participants", "medal_events")]
The subset of olympic_athletes with sport == "Gymnastics".
A convenience dataset so examples can focus on a single sport without first
filtering. Columns are identical to olympic_athletes.
gymnastics_athletesgymnastics_athletes
A data frame with 29,413 rows and 16 variables; see
olympic_athletes for the full column descriptions.
See olympic_athletes.
data(gymnastics_athletes) head(gymnastics_athletes)data(gymnastics_athletes) head(gymnastics_athletes)
One row per (Games, NOC) with verified Gold/Silver/Bronze counts cross-
checked against olympedia.org and Wikipedia/IOC. Use this rather than
aggregating olympic_athletes when you want the per-team-event
medal convention (one medal per gold-winning ice hockey team, not 25).
medal_tablemedal_table
A data frame with 1,929 rows and 11 variables:
Integer. Olympedia's internal edition number.
Character. e.g. "2026 Winter".
Integer.
Character. "Summer" or "Winter".
Character. Three-letter IOC code.
Character. Full country/team name.
Integer. Medal counts.
Integer. Sum of the three.
Character. Free-text notes (e.g. shared medals, post-hoc reallocations).
https://www.olympedia.org/ (manually verified per edition).
data(medal_table) subset(medal_table, year == 2024)[1:10, ]data(medal_table) subset(medal_table, year == 2024)[1:10, ]
One row per (athlete, Games, event) participation across every modern Summer and Winter Olympic Games from Athens 1896 through Milano-Cortina 2026. Rows for 1896-2016 come from the rgriff23 Olympic_history dataset (originally scraped from sports-reference.com); rows for 2018-2026 were scraped from olympedia.org.
olympic_athletesolympic_athletes
A data frame with 315,094 rows and 16 variables:
Integer. Unique athlete ID. Original IDs are 1..135571; athletes new to the 2018-2026 editions get IDs starting at 1,000,000 to avoid collision.
Character. ASCII-folded athlete name.
Character. "M" or "F".
Integer or NA. Approximate age at the start of the
Games, computed from date of birth (Feb 1 reference for Winter,
Jul 15 for Summer).
Numeric or NA. Height in centimetres.
Numeric or NA. Weight in kilograms.
Character. Country/team name as displayed on the source.
Character. Three-letter IOC code (e.g. "USA",
"NOR", "ROC").
Character. "<year> <Summer/Winter>", e.g.
"2026 Winter".
Integer. Calendar year of the Games. Tokyo 2020 is coded as 2020 even though it was held in 2021 (IOC convention).
Character. "Summer" or "Winter".
Character. Host city in the local-language
form rendered in the Latin alphabet, i.e. native Latin-script
names retain their diacritics ("Athína", "München",
"Montréal", "Ciudad de México"), and non-Latin-script
names use a standard romanization rather than the city's native
script ("Moskva", "Tokyo", "Beijing",
"PyeongChang"). The column is therefore
always ASCII-or-Latin-1 and never contains the city's
native non-Latin alphabet.
Character. Common English name of the host city
(e.g. "Athens", "Munich", "Moscow",
"Mexico City").
Character. Sport name. The 2018-2026 rows are normalised
to the original sport names where possible (e.g. "Cycling Track"
and "Cycling Road" both collapse to "Cycling").
Character. Event name including the sport prefix.
Character or NA. "Gold", "Silver",
"Bronze", or NA. Per-player: every member of
a medal-winning team roster gets a row with the team's medal.
1896-2016: Griffin, R. (2018). Olympic_history. https://github.com/rgriff23/Olympic_history
2018-2026: https://www.olympedia.org/ (scraped April 2026).
data(olympic_athletes) head(olympic_athletes) table(olympic_athletes$year, olympic_athletes$season) # Top medal-winning NOCs at Paris 2024 (one row per athlete-medal) library(dplyr) olympic_athletes |> filter(year == 2024, !is.na(medal)) |> count(noc, medal) |> tidyr::pivot_wider(names_from = medal, values_from = n, values_fill = 0) |> arrange(desc(Gold + Silver + Bronze))data(olympic_athletes) head(olympic_athletes) table(olympic_athletes$year, olympic_athletes$season) # Top medal-winning NOCs at Paris 2024 (one row per athlete-medal) library(dplyr) olympic_athletes |> filter(year == 2024, !is.na(medal)) |> count(noc, medal) |> tidyr::pivot_wider(names_from = medal, values_from = n, values_fill = 0) |> arrange(desc(Gold + Silver + Bronze))
The subset of olympic_athletes from the Paris 2024 Summer
Games (year == 2024 & season == "Summer"). A single-Games convenience
dataset: small enough that a height vs weight scatterplot shows
over-plotting without the multi-hundred-thousand-row scale of the full data,
and no filter() is required. Note that bio data (height/weight) is
missing for many recent athletes, so roughly a third of rows have complete
height and weight. Columns are identical to
olympic_athletes.
olympic_athletes_2024olympic_athletes_2024
A data frame with 13,660 rows and 16 variables; see
olympic_athletes for the full column descriptions.
See olympic_athletes.
For the same data a generation earlier (Rome 1960), filter the full
data: olympic_athletes |> filter(year == 1960, season == "Summer").
data(olympic_athletes_2024) head(olympic_athletes_2024)data(olympic_athletes_2024) head(olympic_athletes_2024)
A small, tidy summary of the ten countries that won the most total medals at
the Paris 2024 Summer Games, in long format with one row per
country-and-medal-type. Built for barplot examples: ten ordered categories
(rather than the ~90 medal-winning nations in medal_table) plus
a medal fill variable, so stacked, dodged, and proportional barplots
all read cleanly without any filtering.
paris_2024_top_medalsparis_2024_top_medals
A data frame with 30 rows (10 countries x 3 medal types) and 4 variables:
Factor. Country/NOC name, levels ordered from the most to the fewest total medals (United States first).
Character. Three-letter IOC code (e.g. "USA", "CHN").
Factor with levels "Gold", "Silver", "Bronze".
Integer. Number of that medal type won by that country.
Derived from medal_table (games "2024 Summer").
data(paris_2024_top_medals) head(paris_2024_top_medals)data(paris_2024_top_medals) head(paris_2024_top_medals)
A tiny pre-counted table: one row per Olympic season (Summer/Winter) with
the number of athlete-event rows in olympic_athletes for that
season. Added so plotting exercises can contrast geom_bar() (counts
raw rows for you) with geom_col() (plots pre-counted values) without
introducing base R counting code.
season_countsseason_counts
A data frame with 2 rows and 2 variables:
Factor. "Summer" or "Winter".
Integer. Number of athlete-event rows in
olympic_athletes for that season.
Derived from olympic_athletes (one count per season).
data(season_counts) season_countsdata(season_counts) season_counts
The subset of olympic_athletes with sport in
Basketball, Volleyball, or Curling: three team sports with contrasting
physiques, handy for comparing distributions across groups (boxplots,
violins, facets) without first filtering. Columns are identical to
olympic_athletes.
team_sport_athletesteam_sport_athletes
A data frame with 10,912 rows and 16 variables; see
olympic_athletes for the full column descriptions.
See olympic_athletes.
data(team_sport_athletes) head(team_sport_athletes)data(team_sport_athletes) head(team_sport_athletes)
The subset of medal_table with noc == "USA" and
season == "Summer": one row per Summer Games the USA attended.
A convenience dataset for time-series plots of one nation's medal haul
without first filtering. Columns are identical to medal_table.
Note the USA-boycotted 1980 Moscow Games have no row at all.
usa_summer_medalsusa_summer_medals
A data frame with 30 rows and 11 variables; see
medal_table for the full column descriptions.
See medal_table.
data(usa_summer_medals) head(usa_summer_medals)data(usa_summer_medals) head(usa_summer_medals)
The subset of olympic_athletes with sport == "Volleyball".
A convenience dataset so examples can focus on a single sport without first
filtering. Columns are identical to olympic_athletes.
volleyball_athletesvolleyball_athletes
A data frame with 4,792 rows and 16 variables; see
olympic_athletes for the full column descriptions.
See olympic_athletes.
data(volleyball_athletes) head(volleyball_athletes)data(volleyball_athletes) head(volleyball_athletes)