Youth unemployment rate - % of active population aged 15-24 - tipslm80

Data - Eurostat

Info

Last observation: Annual: 2025 (N = 58)

First observation: Annual: 2003 (N = 1)

Last data update: 11 aoû 2026, 22:31. Last compile: 12 aoû 2026, 04:00

Structure

unit

Code
tipslm80 %>%
  select_if(~n_distinct(.) > 1) |>
  
  group_by(unit, Unit) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
unit Unit Nobs
PC_ACT Percentage of population in the labour force 519
PPCH_3Y Percentage point change (t-(t-3)) 429

Greece, Spain, Italy, Portugal

Code
tipslm80 |>
  filter(geo %in% c("EL", "ES", "IT", "PT"),
         unit == "PC_ACT") |>
  year_to_date() |>

  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values/100) |>
  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(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Youth unemployment rate - % of active population aged 15-24") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1))

Latest Year: Cross-Country Snapshot

Code
latest_y_youth <- tipslm80 |>
  filter(unit == "PC_ACT",
         !is.na(values)) |>
  summarise(m = max(time)) |>
  pull(m)

tipslm80 |>
  filter(unit == "PC_ACT",
         time == latest_y_youth,
         !geo %in% c("EA20", "EA21", "EU27_2020")) |>
  select(Geo, values) |>
  rename(`Youth unemployment rate (%)` = values) |>
  arrange(-`Youth unemployment rate (%)`) |>
  print_table_conditional()
Geo Youth unemployment rate (%)
Romania 26.1
Spain 24.9
Sweden 24.3
Finland 21.8
Estonia 20.7
Italy 20.6
France 19.8
Portugal 19.5
Greece 19.1
Croatia 18.3
Belgium 17.4
Slovakia 15.3
Latvia 14.8
Lithuania 14.1
Hungary 13.9
Denmark 13.8
Cyprus 13.5
Bulgaria 13.1
Poland 12.2
Slovenia 12.1
Ireland 11.8
Austria 11.5
Czechia 10.4
Malta 9.6
Netherlands 8.8
Germany 7.1

France, Germany, Italy, Spain, Netherlands

Levels

Code
tipslm80 |>
  filter(geo %in% c("FR", "DE", "NL", "ES", "IT"),
         unit == "PC_ACT") |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values/100) |>
  mutate(color = ifelse(geo == "NL", 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(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Youth unemployment rate - % of active population aged 15-24") +
  scale_y_continuous(breaks = 0.01*seq(-300, 2200, 2),
                     labels = scales::percent_format(accuracy = 1))

Changes

Code
tipslm80 |>
  filter(geo %in% c("FR", "DE", "NL", "ES", "IT"),
         unit == "PPCH_3Y") |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values/100) |>
  mutate(color = ifelse(geo == "NL", 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(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Youth unemployment rate - % of active population aged 15-24") +
  scale_y_continuous(breaks = 0.01*seq(-300, 2200, 2),
                     labels = scales::percent_format(accuracy = 1)) +
  geom_hline(yintercept = 0.02, linetype = "dashed")