Quarterly non-financial accounts for general government
Data - Eurostat
Info
Last observation: Quarterly: 2026Q1 (N = 15,932)
First observation: Quarterly: 1995Q1 (N = 4,110)
Last data update: 23 jul 2026, 22:51. Last compile: 24 jul 2026, 01:46
Structure
na_item
Revenue & Expenditure, France
Total Revenue vs. Total Expenditure (% of GDP)
Code
gov_10q_ggnfa %>%
filter(sector == "S13",
unit == "PC_GDP",
na_item %in% c("TE", "TR"),
geo == "FR",
s_adj == "NSA") %>%
quarter_to_date() %>%
mutate(values = values / 100) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("Percentage of GDP") +
geom_line(aes(x = date, y = values, color = Na_item)) +
theme(legend.position = c(0.25, 0.85),
legend.title = element_blank()) +
scale_y_continuous(labels = scales::percent_format(acc = 1)) +
scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
labels = date_format("%Y"))
Interest Expenditure
FR, DE, IT, ES, NL
Code
gov_10q_ggnfa %>%
filter(sector == "S13",
unit == "PC_GDP",
na_item == "D41PAY",
geo %in% c("FR", "DE", "IT", "ES", "NL"),
s_adj == "NSA") %>%
quarter_to_date() %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values / 100) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("Interest expenditure (% of GDP)") +
geom_line(aes(x = date, y = values, color = color)) +
scale_color_identity() + add_5flags +
theme(legend.position = c(0.2, 0.85),
legend.title = element_blank()) +
scale_y_continuous(labels = scales::percent_format(acc = 1)) +
scale_x_date(breaks = as.Date(paste0(seq(1700, 2100, 5), "-01-01")),
labels = date_format("%Y"))
Latest Quarter, General Government (S13, % of GDP)
Code
latest_q_fiscal <- gov_10q_ggnfa %>%
filter(sector == "S13",
unit == "PC_GDP",
na_item == "B9",
s_adj == "NSA",
!is.na(values)) %>%
summarise(m = max(time)) %>%
pull(m)
gov_10q_ggnfa %>%
filter(sector == "S13",
unit == "PC_GDP",
na_item %in% c("TR", "TE", "B9", "D41PAY"),
geo %in% c("FR", "DE", "IT", "ES", "NL"),
s_adj == "NSA",
time == latest_q_fiscal) %>%
mutate(values = values / 100) %>%
select(na_item, Na_item, Geo, values) %>%
spread(Geo, values) %>%
print_table_conditional()| na_item | Na_item | France | Germany | Italy | Netherlands | Spain |
|---|---|---|---|---|---|---|
| B9 | Net lending (+)/net borrowing (-) | -0.061 | -0.032 | -0.078 | -0.010 | -0.015 |
| D41PAY | Interest, expenditure | 0.018 | 0.011 | 0.035 | 0.008 | 0.022 |
| TE | Total general government expenditure | 0.557 | 0.493 | 0.501 | 0.445 | 0.425 |
| TR | Total general government revenue | 0.496 | 0.461 | 0.423 | 0.435 | 0.409 |
EA-19, Deficit
Code
gov_10q_ggnfa %>%
filter(time %in% c("2022Q2", "2022Q1"),
sector == "S13",
unit == "PC_GDP",
na_item == "B9",
s_adj == "NSA") %>%
select_if(~ n_distinct(.) > 1) %>%
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(`2022Q2`) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}Deficit
All
Code
gov_10q_ggnfa %>%
filter(sector == "S13",
unit == "PC_GDP",
na_item == "B9",
geo %in% c("FR", "DE", "IT", "ES", "NL"),
s_adj == "NSA") %>%
quarter_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_5flags +
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"))
2000-
Code
gov_10q_ggnfa %>%
filter(sector == "S13",
unit == "PC_GDP",
na_item == "B9",
geo %in% c("FR", "DE", "IT", "ES", "NL"),
s_adj == "NSA") %>%
quarter_to_date() %>%
left_join(colors, by = c("Geo" = "country")) %>%
mutate(values = values / 100) %>%
filter(date >= as.Date("2000-01-01")) %>%
ggplot(.) + theme_minimal() + xlab("") + ylab("Deficit") +
geom_line(aes(x = date, y = values, color = color)) +
scale_color_identity() + add_5flags +
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, 2), "-01-01")),
labels = date_format("%Y"))