Estimated average age of young people leaving the parental household by sex - yth_demo_030
Data - Eurostat
Info
Last observation: Annual: 2025 (N = 99)
First observation: Annual: 2000 (N = 33)
Last data update: 11 aoû 2026, 19:50. Last compile: 12 aoû 2026, 04:06
Structure
Sweden, France, Italy, Spain
Code
yth_demo_030 |>
filter(geo %in% c("SE", "FR", "IT", "ES"),
sex == "T") |>
year_to_date() |>
left_join(colors, by = c("Geo" = "country")) |>
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(1990, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.2, 0.85), legend.title = element_blank()) +
xlab("") + ylab("Average age leaving the parental household")
France: Males vs. Females
Code
yth_demo_030 |>
filter(geo == "FR",
sex %in% c("F", "M")) |>
year_to_date() |>
ggplot() + geom_line(aes(x = date, y = values, color = Sex)) +
theme_minimal() +
scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 2), "-01-01")),
labels = date_format("%Y")) +
theme(legend.position = c(0.25, 0.85), legend.title = element_blank()) +
xlab("") + ylab("Average age leaving the parental household, France")
Latest Year: Cross-Country Snapshot
Code
latest_y_yth <- yth_demo_030 |>
filter(sex == "T",
!is.na(values)) |>
summarise(m = max(time)) |>
pull(m)
yth_demo_030 |>
filter(sex == "T",
time == latest_y_yth,
!geo %in% c("EA21", "EU27_2020")) |>
select(Geo, values) |>
rename(`Average age leaving parental household` = values) |>
arrange(-`Average age leaving parental household`) |>
print_table_conditional()2018 Map
Code
europe_NUTS0_new <- yth_demo_030 |>
filter(sex == "T",
time == "2018") |>
select(geo, values) |>
right_join(europe_NUTS0 |>
filter(long >= -10,
lat >= 20), by = "geo") |>
group_by(geo, values) |>
summarise(long = mean(long), lat = mean(lat))
yth_demo_030 |>
filter(sex == "T",
time == "2018") |>
select(geo, values) |>
right_join(europe_NUTS0 |>
filter(long >= -10,
lat >= 20), by = "geo") |>
ggplot(aes(x = long, y = lat)) +
geom_polygon(aes(group = group, fill = values)) + coord_map() +
scale_fill_viridis_c(na.value = "white",
labels = dollar_format(a = 1, p = "", su = ""),
breaks = seq(0, 80, 2)) +
geom_text(aes(label = values), data = europe_NUTS0_new, size = 3, hjust = 0.5) +
theme_void() + theme(legend.position = c(0.25, 0.85)) +
labs(fill = "Average age of young people \nleaving the parental household")
Gif
Code
europe_NUTS0_new <- yth_demo_030 |>
filter(sex == "T") |>
mutate(year = as.integer(time)) |>
select(geo, year, values) |>
right_join(europe_NUTS0 |>
filter(long >= -10,
lat >= 20), by = "geo") |>
group_by(geo, year, values) |>
summarise(long = mean(long), lat = mean(lat))
options(gganimate.nframes = 50, gganimate.end_pause = 10)
yth_demo_030 |>
filter(sex == "T") |>
mutate(year = as.integer(time)) |>
select(year, geo, values) |>
left_join(europe_NUTS0 |>
filter(long >= -10,
lat >= 20), by = "geo") |>
arrange(year) |>
na.omit() |>
ggplot(aes(x = long, y = lat)) +
geom_polygon(aes(group = group, fill = values)) + coord_map() +
scale_fill_viridis_c(na.value = "white",
labels = dollar_format(a = 1, p = "", su = ""),
breaks = seq(0, 80, 2)) +
theme_void() + theme(legend.position = c(0.25, 0.85)) +
labs(fill = "Average age of young people \nleaving the parental household") +
{if(!is_latex_output())transition_time(year)} +
{if(!is_latex_output())labs(title = "Year: {frame_time}")}