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.
Format
A data frame with 315,094 rows and 16 variables:
- id
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.
- name
Character. ASCII-folded athlete name.
- sex
Character.
"M"or"F".- age
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).- height
Numeric or
NA. Height in centimetres.- weight
Numeric or
NA. Weight in kilograms.- team
Character. Country/team name as displayed on the source.
- noc
Character. Three-letter IOC code (e.g.
"USA","NOR","ROC").- games
Character.
"<year> <Summer/Winter>", e.g."2026 Winter".- year
Integer. Calendar year of the Games. Tokyo 2020 is coded as 2020 even though it was held in 2021 (IOC convention).
- season
Character.
"Summer"or"Winter".- city_local_latin
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.- city_english
Character. Common English name of the host city (e.g.
"Athens","Munich","Moscow","Mexico City").- sport
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").- event
Character. Event name including the sport prefix.
- medal
Character or
NA."Gold","Silver","Bronze", orNA. Per-player: every member of a medal-winning team roster gets a row with the team's medal.
Source
1896-2016: Griffin, R. (2018). Olympic_history. https://github.com/rgriff23/Olympic_history
2018-2026: https://www.olympedia.org/ (scraped April 2026).
Examples
data(olympic_athletes)
head(olympic_athletes)
#> id name sex age height weight team noc
#> 1 12068 Arthur Charles Blake M 24 NA NA United States USA
#> 2 35094 Angelos Fetsis M NA NA NA Greece GRE
#> 3 35698 Edwin Harold "Teddy" Flack M 22 NA NA Australia AUS
#> 4 38123 Carl Galle M 23 154 45 Germany GER
#> 5 41160 Dimitrios P. Golemis M 21 NA NA Greece GRE
#> 6 57441 Konstantinos Karakatsanis M NA NA NA Greece GRE
#> games year season city_local_latin city_english sport
#> 1 1896 Summer 1896 Summer Athína Athens Athletics
#> 2 1896 Summer 1896 Summer Athína Athens Athletics
#> 3 1896 Summer 1896 Summer Athína Athens Athletics
#> 4 1896 Summer 1896 Summer Athína Athens Athletics
#> 5 1896 Summer 1896 Summer Athína Athens Athletics
#> 6 1896 Summer 1896 Summer Athína Athens Athletics
#> event medal
#> 1 Athletics Men's 1,500 metres Silver
#> 2 Athletics Men's 1,500 metres <NA>
#> 3 Athletics Men's 1,500 metres Gold
#> 4 Athletics Men's 1,500 metres <NA>
#> 5 Athletics Men's 1,500 metres <NA>
#> 6 Athletics Men's 1,500 metres <NA>
table(olympic_athletes$year, olympic_athletes$season)
#>
#> Summer Winter
#> 1896 380 0
#> 1900 1936 0
#> 1904 1301 0
#> 1906 1733 0
#> 1908 3101 0
#> 1912 4040 0
#> 1920 4292 0
#> 1924 5233 460
#> 1928 4992 582
#> 1932 2969 352
#> 1936 6506 895
#> 1948 6405 1075
#> 1952 8270 1088
#> 1956 5127 1307
#> 1960 8119 1116
#> 1964 7702 1778
#> 1968 8588 1891
#> 1972 10304 1655
#> 1976 8641 1861
#> 1980 7191 1746
#> 1984 9454 2134
#> 1988 12037 2639
#> 1992 12977 3436
#> 1994 0 3160
#> 1996 13780 0
#> 1998 0 3605
#> 2000 13821 0
#> 2002 0 4109
#> 2004 13443 0
#> 2006 0 4382
#> 2008 13602 0
#> 2010 0 4402
#> 2012 12920 0
#> 2014 0 4891
#> 2016 13688 0
#> 2018 0 5119
#> 2020 14535 0
#> 2022 0 5249
#> 2024 13660 0
#> 2026 0 5415
# Top medal-winning NOCs at Paris 2024 (one row per athlete-medal)
library(dplyr)
#>
#> Attaching package: ‘dplyr’
#> The following objects are masked from ‘package:stats’:
#>
#> filter, lag
#> The following objects are masked from ‘package:base’:
#>
#> intersect, setdiff, setequal, union
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))
#> # A tibble: 92 × 4
#> noc Bronze Gold Silver
#> <chr> <int> <int> <int>
#> 1 USA 73 76 46
#> 2 FRA 16 40 85
#> 3 CHN 20 24 38
#> 4 GER 25 7 44
#> 5 NED 23 43 3
#> 6 AUS 22 14 29
#> 7 ESP 20 38 3
#> 8 BRA 21 2 29
#> 9 DEN 19 18 1
#> 10 ITA 12 20 6
#> # ℹ 82 more rows
