Hospital beds by NUTS 2 regions - hlth_rs_bdsrg

Data - Eurostat

Info

Last observation: Annual: 2021 (N = 32)

First observation: Annual: 1993 (N = 2,098)

Last data update: 11 aoû 2026, 20:14. Last compile: 12 aoû 2026, 00:22

Structure

Curative Care Beds: France, Germany, Italy

Code
hlth_rs_bdsrg |>
  filter(geo %in% c("FR", "DE", "IT"),
         facility == "HBEDT_CUR",
         unit == "P_HTHAB") |>
  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, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.25, 0.15),
        legend.title = element_blank()) +
  xlab("") + ylab("Curative care beds (per 100,000 inhabitants)")

Bed Types: France

Code
hlth_rs_bdsrg |>
  filter(geo == "FR",
         facility %in% c("HBEDT_CUR", "HBEDT_LT", "HBEDT_REH", "HBEDI_PSY"),
         unit == "P_HTHAB") |>
  year_to_date() |>

  ggplot() + geom_line(aes(x = date, y = values, color = Facility)) +
  theme_minimal() +
  scale_x_date(breaks = as.Date(paste0(seq(1990, 2100, 5), "-01-01")),
               labels = date_format("%Y")) +
  theme(legend.position = "right") +
  xlab("") + ylab("Beds (per 100,000 inhabitants)")

Latest Year: Available Beds by Country

Code
latest_y <- hlth_rs_bdsrg |>
  filter(nchar(geo) == 2,
         facility == "HBEDT",
         unit == "P_HTHAB",
         !is.na(values)) |>
  summarise(m = max(time)) |>
  pull(m)

hlth_rs_bdsrg |>
  filter(nchar(geo) == 2,
         facility == "HBEDT",
         unit == "P_HTHAB",
         time == latest_y) |>
  mutate(values = round(values, 0)) |>
  select(Geo, values) |>
  arrange(-values) |>
  print_table_conditional()
Geo values
Belgium 550
Denmark 253

Ex 1: Hospital Care Beds

Code
hlth_rs_bdsrg |>
  filter(time == "2015", 
         nchar(geo) == 4,
         facility == "HBEDT_CUR") |>
  
  select(geo, Geo, hospital_care = values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Ex 2: Hospital Care Beds - NUTS2

Code
hlth_rs_bdsrg |>
  filter(time == "2015", 
         nchar(geo) == 4,
         facility == "HBEDT_CUR",
         unit == "HAB_P") |>
  
  select(geo, Geo, values) |>
  arrange(-values) |>
  right_join(europe_NUTS2, by = "geo") |>
  filter(long >= -15, lat >= 33) |>
  ggplot(aes(x = long, y = lat, group = group, fill = values)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = ""),) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "Inhabitants per curative beds")

Ex 2: Available Beds - NUTS2

Code
hlth_rs_bdsrg |>
  filter(time == "2015", 
         nchar(geo) == 4,
         facility == "HBEDT",
         unit == "HAB_P") |>
  
  select(geo, Geo, values) |>
  arrange(-values) |>
  right_join(europe_NUTS2, by = "geo") |>
  filter(long >= -15, lat >= 33) |>
  ggplot(aes(x = long, y = lat, group = group, fill = values)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::dollar_format(accuracy = 1, prefix = ""),) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "Inhabitants per available beds")