Median saving rate by educational attainment level of the reference person - experimental statistics - icw_sr_04

Data - Eurostat

Info

Last observation: 2020 (N = 310)

First observation: 2010 (N = 292)

Last data update: 14 aoû 2026, 21:32. Last compile: 18 aoû 2026, 01:29

Structure

Median Saving Rate Over Time (All Education Levels)

France, Germany, Italy, Spain, Netherlands

Code
icw_sr_04 |>
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         isced11 == "TOTAL") |>
  year_to_date() |>

  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values/100) |>
  mutate(color = ifelse(geo == "DE", color2, color)) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  theme_minimal() + scale_color_identity() + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(2005, 2100, 1), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Median saving rate (% of disposable income)") +
  scale_y_continuous(breaks = 0.01*seq(-30, 50, 5),
                     labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0, linetype = "dashed", color = "black")

Tables

2010

Code
icw_sr_04 |>
  filter(time == "2010") |>
  select(isced11, geo, Geo, values) |>
  
  spread(isced11, values) |>
  select(geo, Geo, TOTAL, everything()) |>
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) |>
  arrange(-`TOTAL`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2015

Code
icw_sr_04 |>
  filter(time == "2015") |>
  select(isced11, geo, Geo, values) |>
  
  spread(isced11, values) |>
  select(geo, Geo, TOTAL, everything()) |>
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) |>
  arrange(-`TOTAL`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Germany, France, Sweden

Code
icw_sr_04 |>
  filter(time == "2015",
         geo %in% c("SE", "FR", "DE"),
         grepl("ED", isced11)) |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values/100) |>
  ggplot() + geom_line(aes(x = isced11, y = values, color = color, group = color)) +
  scale_color_identity() + theme_minimal() +
  geom_image(data = . %>%
               group_by(isced11) %>%
               filter(n() == 3) %>%
               arrange(values) %>%
               mutate(dist = min(values[2]-values[1],values[3]-values[2],values[4]-values[3])) %>%
               arrange(-dist, isced11) %>%
               head(3) %>%
               mutate(image = paste0("../../icon/flag/", str_to_lower(gsub(" ", "-", Geo)), ".png")),
             aes(x = isced11, y = values, image = image), asp = 1.5) +
  xlab("Education") + ylab("Taux d'épargne médian par niveau d'éducation") +
  scale_y_continuous(breaks = 0.01*seq(-30, 50, 5),
                     labels = percent_format(accuracy = 1))