Homework #3

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.2.1     ✔ readr     2.2.0
✔ forcats   1.0.1     ✔ stringr   1.6.0
✔ ggplot2   4.0.3     ✔ tibble    3.3.1
✔ lubridate 1.9.5     ✔ tidyr     1.3.2
✔ purrr     1.2.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
knitr::opts_chunk$set(echo = TRUE)
olympics <- readr::read_csv("https://raw.githubusercontent.com/rfordatascience/tidytuesday/master/data/2021/2021-07-27/olympics.csv")
Rows: 271116 Columns: 15
── Column specification ────────────────────────────────────────────────────────
Delimiter: ","
chr (10): name, sex, team, noc, games, season, city, sport, event, medal
dbl  (5): id, age, height, weight, year

ℹ Use `spec()` to retrieve the full column specification for this data.
ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
olympic_gymnasts <- olympics %>%
  filter(!is.na(age)) %>%
  filter(sport == "Gymnastics") %>%
  mutate(
    medalist = case_when(
      is.na(medal) ~ FALSE,
      !is.na(medal) ~ TRUE
    )
  )

Question 1

df <- olympic_gymnasts |>
  select(name, sex, age, team, year, medalist) 

df
# A tibble: 25,528 × 6
   name                    sex     age team     year medalist
   <chr>                   <chr> <dbl> <chr>   <dbl> <lgl>   
 1 Paavo Johannes Aaltonen M        28 Finland  1948 TRUE    
 2 Paavo Johannes Aaltonen M        28 Finland  1948 TRUE    
 3 Paavo Johannes Aaltonen M        28 Finland  1948 FALSE   
 4 Paavo Johannes Aaltonen M        28 Finland  1948 TRUE    
 5 Paavo Johannes Aaltonen M        28 Finland  1948 FALSE   
 6 Paavo Johannes Aaltonen M        28 Finland  1948 FALSE   
 7 Paavo Johannes Aaltonen M        28 Finland  1948 FALSE   
 8 Paavo Johannes Aaltonen M        28 Finland  1948 TRUE    
 9 Paavo Johannes Aaltonen M        32 Finland  1952 FALSE   
10 Paavo Johannes Aaltonen M        32 Finland  1952 TRUE    
# ℹ 25,518 more rows

Question 2

df2 <- df |>
  filter(year %in% c(2008, 2012, 2016 ))

df2
# A tibble: 2,703 × 6
   name              sex     age team     year medalist
   <chr>             <chr> <dbl> <chr>   <dbl> <lgl>   
 1 Nstor Abad Sanjun M        23 Spain    2016 FALSE   
 2 Nstor Abad Sanjun M        23 Spain    2016 FALSE   
 3 Nstor Abad Sanjun M        23 Spain    2016 FALSE   
 4 Nstor Abad Sanjun M        23 Spain    2016 FALSE   
 5 Nstor Abad Sanjun M        23 Spain    2016 FALSE   
 6 Nstor Abad Sanjun M        23 Spain    2016 FALSE   
 7 Katja Abel        F        25 Germany  2008 FALSE   
 8 Katja Abel        F        25 Germany  2008 FALSE   
 9 Katja Abel        F        25 Germany  2008 FALSE   
10 Katja Abel        F        25 Germany  2008 FALSE   
# ℹ 2,693 more rows

Question 3

df2 |> group_by(year) |>
  summarise(mean_age = mean(age))
# A tibble: 3 × 2
   year mean_age
  <dbl>    <dbl>
1  2008     21.6
2  2012     21.9
3  2016     22.2

Question 4

oly_year <- olympic_gymnasts |>
  group_by(year) |>
  summarise(mean_age = mean(age))

oly_year
# A tibble: 29 × 2
    year mean_age
   <dbl>    <dbl>
 1  1896     24.3
 2  1900     22.2
 3  1904     25.1
 4  1906     24.7
 5  1908     23.2
 6  1912     24.2
 7  1920     26.7
 8  1924     27.6
 9  1928     25.6
10  1932     23.9
# ℹ 19 more rows
min(oly_year$mean_age)
[1] 19.86606

Question 5

olympic_gymnasts |>
  filter(medalist == TRUE) |>
  group_by(team) |>
  summarize(total_medalists = n()) |>
  arrange(desc(total_medalists))
# A tibble: 42 × 2
   team          total_medalists
   <chr>                   <int>
 1 Soviet Union              288
 2 United States             176
 3 Japan                     166
 4 Romania                   134
 5 Norway                    121
 6 Denmark                   110
 7 Hungary                   110
 8 China                     109
 9 Sweden                    103
10 Italy                     100
# ℹ 32 more rows

Discussion: I wanted to determine which teams had the highest number of medal-winning gymnasts. I used filter to keep the athletes who won medals. Then I used group by to group by team, using summarize function I counted the number of medalists in each team. Finally I sorted them from highest to lowest using arrange function.