| source | dataset | Title | .html | .rData |
|---|---|---|---|---|
| oecd | QASA_TABLE7PSD | Quarterly Sector Accounts - Public Sector Debt, consolidated, nominal value | 2026-08-13 | 2026-08-02 |
Quarterly Sector Accounts - Public Sector Debt, consolidated, nominal value
Data - OECD
Info
Data on public debt
| source | dataset | Title | .html | .rData |
|---|---|---|---|---|
| oecd | QASA_TABLE7PSD | Quarterly Sector Accounts - Public Sector Debt, consolidated, nominal value | 2026-08-13 | 2026-08-02 |
| eurostat | ei_mfir_m | Interest rates - monthly data | 2026-08-13 | 2026-08-13 |
| eurostat | gov_10q_ggdebt | Quarterly government debt | 2026-08-13 | 2026-08-12 |
| fred | r | Interest Rates | 2026-08-12 | 2026-08-12 |
| fred | saving | Saving - saving | 2026-08-12 | 2026-08-12 |
| gfd | debt | Debt | 2021-08-22 | 2026-08-01 |
| imf | FM | Fiscal Monitor (FM) | 2026-07-25 | 2026-08-12 |
| imf | GGXCNL_G01_GDP_PT | Net lending/borrowing (also referred as overall balance) (% of GDP) | 2026-08-12 | 2026-08-01 |
| imf | GGXONLB_G01_GDP_PT | Primary net lending/borrowing (also referred as primary balance) (% of GDP) | 2026-08-12 | 2026-08-01 |
| imf | GGXWDN_G01_GDP_PT | Net debt (% of GDP) | 2026-08-12 | 2026-08-01 |
| imf | HPDD | NA | NA | NA |
| wdi | GC.DOD.TOTL.GD.ZS | Central government debt, total (% of GDP) | 2026-08-12 | 2026-08-12 |
| wdi | GC.XPN.INTP.CN | Interest payments (current LCU) | 2026-08-12 | 2026-08-12 |
| wdi | GC.XPN.INTP.RV.ZS | Interest payments (% of revenue) | 2026-08-12 | 2026-08-12 |
| wdi | GC.XPN.INTP.ZS | Interest payments (% of expense) | 2026-08-12 | 2026-08-12 |
LAST_COMPILE
| LAST_COMPILE |
|---|
| 2026-08-14 |
Last
| TIME_PERIOD | Nobs |
|---|---|
| 2025-Q1 | 12 |
Layout
- OECD Website. html

REF_AREA
Code
QASA_TABLE7PSD |>
left_join(QASA_TABLE7PSD_var$LOCATION, by = c("REF_AREA" = "LOCATION")) |>
group_by(REF_AREA, Location) |>
summarise(Nobs = n()) |>
arrange(-Nobs) |>
mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Location))),
Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
select(Flag, everything()) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}TRANSACTION
Code
QASA_TABLE7PSD |>
left_join(QASA_TABLE7PSD_var$TRANSACTION, by = "TRANSACTION") |>
group_by(TRANSACTION, Transaction) |>
summarise(Nobs = n()) |>
arrange(-Nobs) |>
print_table_conditional()| TRANSACTION | Transaction | Nobs |
|---|---|---|
| SAFGD | Total gross debt | 1665 |
SECTOR
Code
QASA_TABLE7PSD |>
left_join(QASA_TABLE7PSD_var$SECTOR, by = "SECTOR") |>
group_by(SECTOR, Sector) |>
summarise(Nobs = n()) |>
arrange(-Nobs) |>
print_table_conditional()| SECTOR | Sector | Nobs |
|---|---|---|
| S1311 | NA | 570 |
| S13G | General government | 525 |
| S1311B | NA | 225 |
| S11001 | NA | 130 |
| S1ZS | NA | 115 |
| S12001 | NA | 100 |
Biggest Debt in $
PCTGDPA - Percentage of GDP, current prices (Nat. Curr.)
Code
QASA_TABLE7PSD |>
filter(TRANSACTION == "SAFGD",
MEASURE == "PCTGDPA") |>
left_join(QASA_TABLE7PSD_var$LOCATION, by = c("REF_AREA" = "LOCATION")) |>
group_by(REF_AREA, Location) |>
summarise(year1 = first(TIME_PERIOD),
value1 = first(obsValue),
year2 = last(TIME_PERIOD),
value2 = last(obsValue)) |>
arrange(-value2) %>%
mutate_at(vars(value1, value2), funs(paste0(round(.), " %"))) |>
mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Location))),
Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
select(Flag, everything()) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}CAR - Current prices, annual levels
Code
QASA_TABLE7PSD |>
filter(TRANSACTION == "SAFGD",
MEASURE == "CAR") |>
left_join(QASA_TABLE7PSD_var$LOCATION, by = c("REF_AREA" = "LOCATION")) |>
group_by(REF_AREA, Location) |>
summarise(year1 = first(TIME_PERIOD),
value1 = first(obsValue),
year2 = last(TIME_PERIOD),
value2 = last(obsValue)) |>
arrange(-value2) %>%
mutate_at(vars(value1, value2), funs(paste0(round(./1000), ""))) |>
mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Location))),
Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
select(Flag, everything()) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}CXCAR - US $, current prices, current exchange rates, annual levels
Code
QASA_TABLE7PSD |>
filter(TRANSACTION == "SAFGD",
MEASURE == "CXCAR") |>
left_join(QASA_TABLE7PSD_var$LOCATION, by = c("REF_AREA" = "LOCATION")) |>
group_by(REF_AREA, Location) |>
summarise(year1 = first(TIME_PERIOD),
value1 = first(obsValue),
year2 = last(TIME_PERIOD),
value2 = last(obsValue)) |>
arrange(-value2) %>%
mutate_at(vars(value1, value2), funs(paste0("$ ", round(./1000), " Bn"))) |>
mutate(Flag = gsub(" ", "-", str_to_lower(gsub(" ", "-", Location))),
Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
select(Flag, everything()) %>%
{if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}France, United States
All
Code
QASA_TABLE7PSD |>
filter(REF_AREA %in% c("FRA", "USA"),
TRANSACTION == "SAFGD",
MEASURE == "CXCAR",
SECTOR == "S13G") |>
quarter_to_date() |>
arrange(desc(date)) |>
mutate(obsValue = obsValue/10^3) |>
group_by(date) |>
filter(n() == 2) |>
left_join(QASA_TABLE7PSD_var$LOCATION, by = c("REF_AREA" = "LOCATION")) |>
group_by(REF_AREA) |>
left_join(colors, by = c("Location" = "country")) |>
ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
scale_color_identity() + add_2flags +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1940, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 40000, 2000))
Log
Code
QASA_TABLE7PSD |>
filter(REF_AREA %in% c("FRA", "USA"),
TRANSACTION == "SAFGD",
MEASURE == "CXCAR",
SECTOR == "S13G") |>
quarter_to_date() |>
arrange(desc(date)) |>
mutate(obsValue = obsValue/10^3) |>
group_by(date) |>
filter(n() == 2) |>
left_join(QASA_TABLE7PSD_var$LOCATION, by = c("REF_AREA" = "LOCATION")) |>
group_by(REF_AREA) |>
left_join(colors, by = c("Location" = "country")) |>
ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
scale_color_identity() + add_2flags +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1940, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_log10(breaks = seq(0, 40000, 2000))
Japan, United States
Code
QASA_TABLE7PSD |>
filter(REF_AREA %in% c("USA", "JPN"),
TRANSACTION == "SAFGD",
MEASURE == "CXCAR",
SECTOR == "S13G") |>
quarter_to_date() |>
arrange(desc(date)) |>
mutate(obsValue = obsValue/10^3) |>
left_join(QASA_TABLE7PSD_var$LOCATION, by = c("REF_AREA" = "LOCATION")) |>
group_by(REF_AREA) |>
left_join(colors, by = c("Location" = "country")) |>
ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
scale_color_identity() + add_2flags +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1940, 2100, 5) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 40000, 2000))
France, United Kingdom, Italy, Canada
Code
QASA_TABLE7PSD |>
filter(REF_AREA %in% c("FRA", "GBR", "ITA", "CAN"),
TRANSACTION == "SAFGD",
MEASURE == "CXCAR",
SECTOR == "S13G") |>
quarter_to_date() |>
arrange(desc(date)) |>
mutate(obsValue = obsValue/10^3) |>
left_join(QASA_TABLE7PSD_var$LOCATION, by = c("REF_AREA" = "LOCATION")) |>
group_by(REF_AREA) |>
group_by(date) |>
filter(n() == 4) |>
left_join(colors, by = c("Location" = "country")) |>
ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
scale_color_identity() + add_4flags +
theme_minimal() + xlab("") + ylab("") +
scale_x_date(breaks = seq(1940, 2100, 2) |> paste0("-01-01") |> as.Date(),
labels = date_format("%Y")) +
scale_y_continuous(breaks = seq(0, 40000, 500))