Quarterly government debt - gov_10dd_edpt1

Data - Eurostat

Info

Last observation: 2025 (N = 2256)

First observation: 1995 (N = 1424)

Last data update: 14 aoû 2026, 23:18. Last compile: 18 aoû 2026, 01:06

Structure

EA-19

Debt

Code
gov_10dd_edpt1 |>
  filter(time %in% c("2022", "2021"),
         sector == "S13",
         unit == "PC_GDP",
         na_item == "GD") |>
  select(geo, Geo, time, values) |>
  spread(time, values) |>
  
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, Geo, geo, everything()) |>
  arrange(-`2022`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Deficit

Code
gov_10dd_edpt1 |>
  filter(time %in% c("2022", "2021"),
         sector == "S13",
         unit == "PC_GDP",
         na_item == "B9") |>
  select(geo, Geo, time, values) |>
  spread(time, values) |>
  
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, Geo, geo, everything()) |>
  arrange(-`2022`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Last

Debt

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "GD") |>
  group_by(geo) |>
  filter(time == max(time)) %>%
  
  select_if(~ n_distinct(.) > 1) |>
  arrange(values) |>
  select(geo, Geo, everything()) |>
  print_table_conditional()

Luxembourg, Denmark, Sweden, Netherlands, Germany, France

Debt

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "GD",
         geo %in% c("NL", "LU", "DK", "SE", "FR")) |>
  
  year_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values / 100) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Public debt (years of GDP)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 260, 20),
                     labels = scales::dollar_format(acc = .1, pre = "", su = " y")) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
               labels = date_format("%Y"))

Deficit

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "B9",
         geo %in% c("NL", "LU", "DK", "SE", "FR")) |>
  
  year_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values / 100) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Deficit") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 260, 1),
                     labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
               labels = date_format("%Y"))

France, Germany, Italy, Spain, Netherlands

Debt

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "GD",
         geo %in% c("FR", "DE", "IT", "ES", "NL")) |>
  
  year_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values / 100) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Public debt (years of GDP)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 260, 20),
                     labels = scales::dollar_format(acc = .1, pre = "", su = " y")) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
               labels = date_format("%Y"))

Deficit

All

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "B9",
         geo %in% c("FR", "DE", "IT", "ES", "NL")) |>
  
  year_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values / 100) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Deficit") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 260, 1),
                     labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 2), "-01-01")),
               labels = date_format("%Y"))

2010-

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "B9",
         geo %in% c("FR", "DE", "IT", "ES", "NL")) |>
  
  year_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values / 100) |>
  filter(date >= as.Date("2010-01-01")) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Deficit") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-100, 260, 1),
                     labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 1), "-01-01")),
               labels = date_format("%Y"))

Interest payments

All

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "D41PAY",
         geo %in% c("FR", "DE", "IT", "ES", "NL", "EA19")) |>
  
  year_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values / 100,
         Geo = ifelse(geo == "EA19", "Europe", Geo)) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Deficit") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 260, 1),
                     labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
               labels = date_format("%Y"))

2005-

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "D41PAY",
         geo %in% c("FR", "DE", "IT", "ES", "NL", "EA19")) |>
  
  year_to_date() |>
  mutate(values = values / 100,
         Geo = ifelse(geo == "EA19", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  filter(date >= as.Date("2005-01-01")) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Interest payments (% of GDP)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 260, 1),
                     labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(2005, 2100, 2), "-01-01")),
               labels = date_format("%Y"))

France, Europe

2005-

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "D41PAY",
         geo %in% c("FR", "EA19")) |>
  
  year_to_date() |>
  mutate(values = values / 100,
         Geo = ifelse(geo == "EA19", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  filter(date >= as.Date("2005-01-01")) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Interest payments (% of GDP)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 260, .1),
                     labels = scales::percent_format(acc = .1)) +
  scale_x_date(breaks = as.Date(paste0(seq(2005, 2100, 2), "-01-01")),
               labels = date_format("%Y"))

France, Portugal, Greece, EUrope

2005-

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "D41PAY",
         geo %in% c("FR", "EA19", "EL", "PT")) |>
  
  year_to_date() |>
  mutate(values = values / 100,
         Geo = ifelse(geo == "EA19", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  filter(date >= as.Date("2005-01-01")) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Interest payments (% of GDP)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 260, .5),
                     labels = scales::percent_format(acc = .1)) +
  scale_x_date(breaks = as.Date(paste0(seq(2005, 2100, 2), "-01-01")),
               labels = date_format("%Y"))

Italy, Portugal, Spain, Greece, Belgium, France

All

Debt

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "GD",
         geo %in% c("IT", "PT", "ES", "EL", "BE", "FR")) |>
  
  year_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values / 100) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Public debt (years of GDP)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 260, 20),
                     labels = scales::dollar_format(acc = .1, pre = "", su = " y")) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
               labels = date_format("%Y"))

Deficit

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "B9",
         geo %in% c("IT", "PT", "ES", "EL", "BE", "FR")) |>
  
  year_to_date() |>
  left_join(colors, by = c("Geo" = "country")) |>
  mutate(values = values / 100) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Deficit") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(-10, 260, 1),
                     labels = scales::percent_format(acc = 1)) +
  scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
               labels = date_format("%Y"))

Debt

Years of GDP

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "GD",
         geo %in% c("IT", "PT", "ES", "EL", "BE", "FR", "EA19")) |>
  
  year_to_date() |>
  mutate(values = values / 100,
         Geo = ifelse(geo == "EA19", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  filter(date >= as.Date("2015-01-01")) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Public debt (years of GDP)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 260, 20),
                     labels = scales::dollar_format(acc = .1, pre = "", su = " y")) +
  scale_x_date(breaks = as.Date(paste0(seq(2015, 2100, 1), "-01-01")),
               labels = date_format("%Y"))

% of GDP…

Code
gov_10dd_edpt1 |>
  filter(sector == "S13",
         unit == "PC_GDP",
         na_item == "GD",
         geo %in% c("IT", "PT", "ES", "EL", "BE", "FR", "EA19")) |>
  
  year_to_date() |>
  mutate(values = values / 100,
         Geo = ifelse(geo == "EA19", "Europe", Geo)) |>
  left_join(colors, by = c("Geo" = "country")) |>
  filter(date >= as.Date("2015-01-01")) |>
  ggplot() + theme_minimal() + xlab("") + ylab("Public debt (% of GDP)") +
  geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + add_flags +
  theme(legend.position = c(0.2, 0.85),
        legend.title = element_blank()) +
  scale_y_continuous(breaks = 0.01*seq(0, 260, 20),
                     labels = scales::percent_format()) +
  scale_x_date(breaks = as.Date(paste0(seq(2015, 2100, 1), "-01-01")),
               labels = date_format("%Y"))