Quarterly Sector Accounts - Public Sector Debt, consolidated, nominal value - QASA_TABLE7PSD
Data - OECD
Last observation: Q1 2025 (N = 12)
First observation: Q4 2014 (N = 3)
Last data update: 02 août 2026, 09:05
Last compile: 02 sept. 2026, 23:53
Structure
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) |>
add_flag_color("Location") |>
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) |>
add_flag_color("Location") |>
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) |>
add_flag_color("Location") |>
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) |>
add_flag_color("Location") |>
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))



