Quarterly National Accounts - KEI

Data - OECD

Info

source dataset Title Updated
oecd QNA Quarterly National Accounts 2026-08-16

Last

obsTime Nobs
2026-Q1 39

TRANSACTION

Code
QNA |>
  group_by(TRANSACTION, Transaction) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()

ACTIVITY

Code
QNA |>
  left_join(ACTIVITY, by = "ACTIVITY") |>
  group_by(ACTIVITY, Activity) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
ACTIVITY Activity Nobs
_Z Not applicable 1680340
_T Total - All activities 697494
A Agriculture, forestry and fishing 123016
F Construction 122512
C Manufacturing 122481
GTI Wholesale and retail trade; repair of motor vehicles and motorcycles; transportation and storage; accommodation and food service activities 121914
BTE Industry (except construction) 121910
J Information and communication 121465
OTQ Public administration, defence, education, human health and social work activities 121240
K Financial and insurance activities 121200
RTU Arts, entertainment and recreation; other service activities; activities of household and extra-territorial organizations and bodies 121000
L Real estate activities 120535
M_N Professional, scientific and technical activities; administrative and support service activities 120084
GTU Services 26708

SECTOR

Code
QNA |>
  left_join(SECTOR, by = "SECTOR") |>
  group_by(SECTOR, Sector) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
SECTOR Sector Nobs
S1 Total economy 3169796
S13 General government 202734
S14 Households 181506
S1M Households and non-profit institutions serving households (NPISH) 151096
S15 Non-profit institutions serving households 28508
S1W Other sectors than general government 8259

PRICE_BASE

Code
QNA |>
  left_join(PRICE_BASE, by = "PRICE_BASE") |>
  group_by(PRICE_BASE, Price_base) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
PRICE_BASE Price_base Nobs
V Current prices 1582848
L Chain linked volume 924166
_Z Not applicable 807936
LR Chain linked volume (rebased) 235009
DR Deflator (rebased) 67362
D Deflator 64560
Q Constant prices 47334
QR Constant prices (rebased) 12684

REF_AREA

Code
QNA |>
  group_by(REF_AREA, Ref_area) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()

TABLE_IDENTIFIER

Code
QNA |>
  left_join(TABLE_IDENTIFIER, by = "TABLE_IDENTIFIER") |>
  group_by(TABLE_IDENTIFIER, Table_identifier) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
TABLE_IDENTIFIER Table_identifier Nobs
T0102 Table 0102 - GDP identity from the expenditure side 1692701
T0111 Table 0111 - Employment by industry 760563
T0101 Table 0101 - Gross value added at basic prices and gross domestic product at market prices 469825
T0103 Table 0103 - GDP identity from the income side 442441
T0107 Table 0107 - Disposable income, saving, net lending / borrowing 176165
T0117 Table 0117 - Final consumption expenditure of households by durability 152831
T0110 Table 0110 - Population and employment 47373

UNIT_MEASURE

Code
QNA |>
  left_join(UNIT_MEASURE, by = "UNIT_MEASURE") |>
  group_by(UNIT_MEASURE, Unit_measure) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
UNIT_MEASURE Unit_measure Nobs
XDC National currency 2341480
PS Persons 425972
H Hours 365584
IX Index 198703
PC Percentage change 175162
USD_PPP US dollars, PPP converted 172158
PD Percentage points 18608
JB Jobs 16380
USD_PPP_PS US dollars per person, PPP converted 15109
XDC_USD National currency per US dollar 12743

TRANSFORMATION

Code
QNA |>
  group_by(TRANSFORMATION, Transformation) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
TRANSFORMATION Transformation Nobs
N Non transformed data 3077556
LA Annual levels 470573
G1 Growth rate, period on period 84053
GY Growth rate, over 1 year 83111
GO1 Contribution to growth rate, period on period 18608
GCM Cumulative growth rate since base period 7998

U.S., Europe

B1GQ_POP

1995-

Code
QNA |>
  filter(REF_AREA %in% c("USA", "EA20"),
         FREQ == "Q",
         TRANSACTION == "B1GQ_POP",
         PRICE_BASE == "LR") |>
  quarter_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  mutate(Location = ifelse(REF_AREA == "USA", "United States", "Europe")) |>
  group_by(Location) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  left_join(colors, by = c("Location" = "country")) |>
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1995 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_2flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

1999-

Code
plot <- QNA |>
  filter(REF_AREA %in% c("USA", "EA20"),
         FREQ == "Q",
         TRANSACTION == "B1GQ_POP",
         PRICE_BASE == "LR") |>
  quarter_to_date() |>
  filter(date >= as.Date("1999-01-01")) |>
  mutate(Location = ifelse(REF_AREA == "USA", "United States", "Europe")) |>
  group_by(Location) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  left_join(colors, by = c("Location" = "country")) |>
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1999T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_2flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(1999, 2100, 5), seq(1997, 2100, 5)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

plot

Code
save(plot, file = "QNA_files/figure-html/USA-EA20-1999-1.RData")

2000-

Code
QNA |>
  filter(REF_AREA %in% c("USA", "EA20"),
         FREQ == "Q",
         TRANSACTION == "B1GQ_POP",
         PRICE_BASE == "LR")  |>
  quarter_to_date() |>
  filter(date >= as.Date("2000-01-01")) |>
  mutate(Location = ifelse(REF_AREA == "USA", "United States", "Europe")) |>
  group_by(Location) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  left_join(colors, by = c("Location" = "country")) |>
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (2000 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color)) + add_2flags +
  scale_color_identity() +
  scale_x_date(breaks = seq(1960, 2100, 2) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(50, 200, 5))

B1GQ

1999-

Absolute

Code
QNA |>
  filter(REF_AREA %in% c("USA", "EA20"),
         FREQ == "Q",
         TRANSACTION == "B1GQ",
         TRANSFORMATION == "N",
         ADJUSTMENT == "Y") |>
  quarter_to_date() |>
  filter(date >= as.Date("1999-01-01")) |>
  arrange(desc(date)) |>
  mutate(Location = ifelse(REF_AREA == "USA", "United States", "Europe")) |>
  left_join(PRICE_BASE, by = "PRICE_BASE") |>
  group_by(Location, PRICE_BASE) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  left_join(colors, by = c("Location" = "country")) |>
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1999T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color, linetype = Price_base)) + add_2flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(1999, 2100, 5), seq(1997, 2100, 5)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 500, 10))

Per capita

Code
QNA |>
  filter(REF_AREA %in% c("USA", "EA20"),
         FREQ == "Q",
         TRANSACTION == c("B1GQ", "POP"),
         TRANSFORMATION == "N",
         ADJUSTMENT == "Y") |>
  quarter_to_date() |>
  filter(date >= as.Date("1999-01-01")) |>
  arrange(desc(date)) |>
  mutate(Location = ifelse(REF_AREA == "USA", "United States", "Europe")) |>
  left_join(PRICE_BASE, by = "PRICE_BASE") |>
  group_by(Location, PRICE_BASE) |>
  arrange(date) |>
  mutate(obsValue = 100 * obsValue / obsValue[1]) |>
  left_join(colors, by = c("Location" = "country")) |>
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) |>
  ggplot() + theme_minimal() + xlab("") + ylab("PIB par habitant (1999T1 = 100)") +
  geom_line(aes(x = date, y = obsValue, color = color, linetype = Price_base)) + add_2flags +
  scale_color_identity() +
  scale_x_date(breaks = c(seq(1999, 2100, 5), seq(1997, 2100, 5)) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.2, 0.8),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(50, 500, 10))