Overcrowding rate by age, sex and poverty status - total population - EU-SILC survey - ilc_lvho05a

Data - Eurostat

Info

Last observation: Annual: 2025 (N = 4,752)

First observation: Annual: 2003 (N = 1,008)

Last data update: 23 jul 2026, 22:33. Last compile: 24 jul 2026, 02:03

Structure

France: Overcrowding by Poverty Status

Above vs. Below 60% of Median Income

Code
ilc_lvho05a %>%
  filter(geo == "FR",
         age == "TOTAL",
         sex == "T",
         rskpovth != "TOTAL") %>%
  year_to_date %>%

  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Rskpovth)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.85),
        legend.title = element_blank()) +
  xlab("") + ylab("Overcrowding rate") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1))

EU27: Overcrowding by Age Group

Children vs. 65 and Over

Code
ilc_lvho05a %>%
  filter(geo == "EU27_2020",
         sex == "T",
         rskpovth == "TOTAL",
         age %in% c("Y_LT18", "Y_GE65")) %>%
  year_to_date %>%

  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = Age)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.8, 0.15),
        legend.title = element_blank()) +
  xlab("") + ylab("Overcrowding rate") +
  scale_y_continuous(labels = scales::percent_format(accuracy = 1))

Latest Year by Country

Code
latest_y <- ilc_lvho05a %>%
  filter(geo == "EU27_2020",
         age == "TOTAL",
         sex == "T",
         rskpovth == "TOTAL",
         !is.na(values)) %>%
  summarise(m = max(time)) %>%
  pull(m)

ilc_lvho05a %>%
  filter(geo %in% c("EU27_2020", "FR", "DE", "IT", "ES", "NL", "PL", "SE"),
         age == "TOTAL",
         sex == "T",
         rskpovth != "TOTAL",
         time == latest_y) %>%
  select(Geo, Rskpovth, values) %>%
  spread(Rskpovth, values) %>%
  arrange(-`Below 60%`) %>%
  print_table_conditional()
Geo Above 60% Below 60%
Sweden 11.0 41.2
Poland 29.8 38.2
Italy 21.8 35.2
European Union - 27 countries (from 2020) 14.3 29.8
France 7.6 27.5
Germany 8.8 27.4
Spain 7.4 17.9
Netherlands 2.8 13.4

Overcrowding Rate Over Time (Total Population)

France, Germany, Italy, Spain, Netherlands

Code
ilc_lvho05a %>%
  filter(geo %in% c("FR", "DE", "IT", "ES", "NL"),
         age == "TOTAL",
         sex == "T",
         rskpovth == "TOTAL") %>%
  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_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(2000, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("Overcrowding rate") +
  scale_y_continuous(breaks = 0.01*seq(0, 60, 5),
                     labels = scales::percent_format(accuracy = 1))