Infant mortality rates

Data - Eurostat

Info

Last observation: Annual: 2024 (N = 119)

First observation: Annual: 1960 (N = 158)

Last data update: 11 aoû 2026, 19:55. Last compile: 11 aoû 2026, 23:20

Structure

Table

2022

Code
demo_minfind |>
  filter(indic_de == "INFMORRT",
         time %in% c("2022")) |>
  
  #filter(geo %in% geo_eurozone) %>%
  arrange(-values) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Evolution 2011-2021

Code
geo <- read_parquet("geo_fr.parquet")
table1 <- demo_minfind |>
  filter(indic_de == "INFMORRT",
         time %in% c("2011","2021")) |>
  
  filter(geo %in% geo_eurozone) |>
  spread(time, values) %>%
  select_if(~ n_distinct(.) > 1) |>
  mutate(`Evolution 2011-2021` = round(`2021`-`2011`, 1)) |>
  arrange(-`Evolution 2011-2021`)
geo <- read_parquet("geo.parquet")

Evolution 2012-2022

Code
geo <- read_parquet("geo_fr.parquet")
table1 <- demo_minfind |>
  filter(indic_de == "INFMORRT",
         time %in% c("2012","2022")) |>
  
  filter(geo %in% geo_eurozone) |>
  spread(time, values) %>%
  select_if(~ n_distinct(.) > 1) |>
  mutate(`Evolution 2012-2022` = round(`2022`-`2012`, 1)) |>
  arrange(-`Evolution 2012-2022`)
geo <- read_parquet("geo.parquet")

table1
# # A tibble: 19 × 5
#    geo   Geo         `2012` `2022` `Evolution 2012-2022`
#    <chr> <chr>        <dbl>  <dbl>                 <dbl>
#  1 LU    Luxembourg     2.5    3.5                   1  
#  2 SI    Slovenia       1.6    2.5                   0.9
#  3 FR    France         3.5    4                     0.5
#  4 EL    Greece         2.9    3                     0.1
#  5 MT    Malta          5.3    5.3                   0  
#  6 DE    Germany        3.3    3.2                  -0.1
#  7 IE    Ireland        3.5    3.2                  -0.3
#  8 CY    Cyprus         3.5    3.1                  -0.4
#  9 FI    Finland        2.4    2                    -0.4
# 10 SK    Slovakia       5.8    5.4                  -0.4
# 11 ES    Spain          3.1    2.6                  -0.5
# 12 NL    Netherlands    3.7    3.2                  -0.5
# 13 IT    Italy          2.9    2.3                  -0.6
# 14 AT    Austria        3.2    2.4                  -0.8
# 15 PT    Portugal       3.4    2.6                  -0.8
# 16 BE    Belgium        3.8    2.9                  -0.9
# 17 LT    Lithuania      3.9    3                    -0.9
# 18 EE    Estonia        3.6    2.2                  -1.4
# 19 LV    Latvia         6.3    2.4                  -3.9

France

1996-

Not Log

Code
demo_minfind |>
  filter(geo %in% c("FR"),
         indic_de == "INFMORRT") |>
  bind_rows(FAMILY_FAM16A_FRA) |>
  add_row(geo = "FR", time = "2023", values = 4 ) |>
  add_row(geo = "FR", time = "2024", values = 4.1 ) |>
  year_to_date() |>
  #filter(date >= as.Date("1996-01-01")) %>%
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = values)) + 
  xlab("") + ylab("Taux de mortalité infantile en France (‰)") +
  scale_x_date(breaks = seq(1994, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(1, 10, 0.1),
                     labels = dollar_format(a = .1, pre = "", su = "‰"))

France, Germany, Italy

All

Code
demo_minfind |>
  filter(geo %in% c("FR", "DE", "IT"),
         indic_de == "INFMORRT") |>
  bind_rows(FAMILY_FAM16A_FRA) |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = values, color = color)) + 
  xlab("") + ylab("Taux de mortalité infantile (‰)") + add_flags +
  scale_x_date(breaks = seq(1940, 2100, 10) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 100, 10), 6, 8, 15, 25, seq(1, 5, 1)),
                     labels = dollar_format(a = .1, pre = "", su = "‰"))

1996-

Code
demo_minfind |>
  filter(geo %in% c("FR", "DE", "IT"),
         indic_de == "INFMORRT") |>
  year_to_date() |>
  filter(date >= as.Date("1996-01-01")) |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = values, color = color)) + 
  xlab("") + ylab("Taux de mortalité infantile (‰)") + add_flags +
  scale_x_date(breaks = seq(1940, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(1, 10, 0.2),
                     labels = dollar_format(a = .1, pre = "", su = "‰"))

France, Germany, Italy, Spain, Greece

All

Code
demo_minfind |>
  filter(geo %in% c("FR", "DE", "IT", "ES", "EL"),
         indic_de == "INFMORRT") |>
  bind_rows(FAMILY_FAM16A_FRA) |>
  add_row(geo = "FR", time = "2022", values = 3.9 ) |>
  add_row(geo = "FR", time = "2023", values = 4 ) |>
  add_row(geo = "FR", time = "2024", values = 4.1 ) |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = values, color = color)) + 
  xlab("") + ylab("Taux de mortalité infantile (‰)") + add_flags +
  scale_x_date(breaks = seq(1940, 2100, 10) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 100, 10), 6, 8, 15, 25, seq(1, 5, 1)),
                     labels = dollar_format(a = .1, pre = "", su = "‰"))

1977-

Code
demo_minfind |>
  filter(geo %in% c("FR", "DE", "IT", "ES", "EL"),
         indic_de == "INFMORRT") |>
  bind_rows(FAMILY_FAM16A_FRA) |>
  add_row(geo = "FR", time = "2022", values = 3.9 ) |>
  add_row(geo = "FR", time = "2023", values = 4 ) |>
  add_row(geo = "FR", time = "2024", values = 4.1 ) |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  filter(date >= as.Date("1977-01-01")) |>
  ggplot() + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = values, color = color)) + 
  xlab("") + ylab("Taux de mortalité infantile (‰)") + add_flags +
  scale_x_date(breaks = seq(1978, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(2, 3, 4, 5, 6, 8, 10, 12, 14, 16, 20),
                     labels = dollar_format(a = .1, pre = "", su = "‰")) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

1985-

Code
demo_minfind |>
  filter(geo %in% c("FR", "DE", "IT", "ES", "EL"),
         indic_de == "INFMORRT") |>
  #add_row(geo = "FR", time = "2022", values = 3.9 ) %>%
  add_row(geo = "FR", time = "2023", values = 4 ) |>
  add_row(geo = "FR", time = "2024", values = 4.1 ) |>
  bind_rows(FAMILY_FAM16A_FRA) |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  filter(date >= as.Date("1985-01-01")) |>
  ggplot() + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = values, color = color)) + 
  xlab("") + ylab("Taux de mortalité infantile (‰)") + add_flags +
  scale_x_date(breaks = seq(1941, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(2, 3, 5, 6, 8, 12, 15, 25),
                     labels = dollar_format(a = .1, pre = "", su = "‰")) +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))

France, Germany, Italy, Spain

Table 2020, 2021

See here

Code
demo_minfind |>
  filter(geo %in% c("FR", "DE", "IT", "ES"),
         indic_de == "INFMORRT",
         time %in% c("2020", "2021")) |>
  print_table_conditional()
freq Freq unit Unit indic_de Indic_de geo Geo time values
A Annual RT Rate INFMORRT Infant mortality rate DE Germany 2020 3.1
A Annual RT Rate INFMORRT Infant mortality rate DE Germany 2021 3.0
A Annual RT Rate INFMORRT Infant mortality rate ES Spain 2020 2.6
A Annual RT Rate INFMORRT Infant mortality rate ES Spain 2021 2.5
A Annual RT Rate INFMORRT Infant mortality rate FR France 2020 3.6
A Annual RT Rate INFMORRT Infant mortality rate FR France 2021 3.7
A Annual RT Rate INFMORRT Infant mortality rate IT Italy 2020 2.4
A Annual RT Rate INFMORRT Infant mortality rate IT Italy 2021 2.3

All

Code
demo_minfind |>
  filter(geo %in% c("FR", "DE", "IT", "ES"),
         indic_de == "INFMORRT") |>
  bind_rows(FAMILY_FAM16A_FRA) |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = values, color = color)) + 
  xlab("") + ylab("Taux de mortalité infantile (‰)") + add_flags +
  scale_x_date(breaks = seq(1940, 2100, 10) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(seq(0, 100, 10), 6, 8, 15, 25, seq(1, 5, 1)),
                     labels = dollar_format(a = .1, pre = "", su = "‰"))

1996-

Not Log

Code
demo_minfind |>
  filter(geo %in% c("FR", "DE", "IT", "ES"),
         indic_de == "INFMORRT") |>
  bind_rows(FAMILY_FAM16A_FRA) |>
  year_to_date() |>
  filter(date >= as.Date("1996-01-01")) |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = values, color = color)) + 
  xlab("") + ylab("Taux de mortalité infantile (‰)") + add_flags +
  scale_x_date(breaks = seq(1941, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(1, 10, 0.2),
                     labels = dollar_format(a = .1, pre = "", su = "‰"))

Log

Code
demo_minfind |>
  filter(geo %in% c("FR", "DE", "IT", "ES"),
         indic_de == "INFMORRT") |>
  bind_rows(FAMILY_FAM16A_FRA) |>
  year_to_date() |>
  filter(date >= as.Date("1996-01-01")) |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + theme_minimal() + scale_color_identity() +
  geom_line(aes(x = date, y = values, color = color)) + 
  xlab("") + ylab("Taux de mortalité infantile (‰)") + add_flags +
  scale_x_date(breaks = seq(1940, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = seq(1, 10, 0.2),
                     labels = dollar_format(a = .1, pre = "", su = "‰"))

NUTS 0

Infant Mortality Rates

Code
demo_minfind |>
  filter(time == "2018", 
         indic_de == "INFMORRT") |>
  
  select(geo, Geo, values) |>
  right_join(europe_NUTS0, by = "geo") |>
  filter(long >= -15, lat >= 33) |>
  ggplot(aes(x = long, y = lat, group = group, fill = values/100)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::percent_format(accuracy = 1),
                       breaks = 0.01*seq(0, 10, 1),
                       values = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "Infant Mortality Rates")

Neonatal Mortality Rates

Code
demo_minfind |>
  filter(time == "2018", 
         indic_de == "NEOMORRT") |>
  
  select(geo, Geo, values) |>
  right_join(europe_NUTS0, by = "geo") |>
  filter(long >= -15, lat >= 33) |>
  ggplot(aes(x = long, y = lat, group = group, fill = values/100)) +
  geom_polygon() + coord_map() +
  scale_fill_viridis_c(na.value = "white",
                       labels = scales::percent_format(accuracy = 1),
                       breaks = 0.01*seq(0, 10, 1),
                       values = c(0, 0.1, 0.2, 0.3, 0.4, 0.5, 1)) +
  theme_void() + theme(legend.position = c(0.25, 0.85)) + 
  labs(fill = "Neonatal Mortality Rates")