Simplified non-financial accounts - SNA_TABLE13

Data - OECD

Info

Last observation: A: 2022 (N = 1533)

First observation: A: 1950 (N = 218)

Last data update: 02 aoû 2026, 09:09. Last compile: 18 aoû 2026, 02:46

Structure

Layout - By country

  • OECD Website. html

United States

France

Layout - By sector

SS1 - All sectors

SS11_S12 - Corporations

SS13 - General government

SS14_S15 - Households and Non-profits

Nobs - Javascript

Code
SNA_TABLE13 |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  group_by(TRANSACT, Transact, SECTOR, MEASURE) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Data Structure

Code
SNA_TABLE13_var$VAR_DESC |>
  print_table_conditional()
id description
LOCATION Country
TRANSACT Transaction
SECTOR Sector
MEASURE Measure
TIME Year
OBS_VALUE Observation Value
TIME_FORMAT Time Format
OBS_STATUS Observation Status
UNIT Unit
POWERCODE Unit multiplier
REFERENCEPERIOD Reference period

Ex: 2018

United States

Code
SNA_TABLE13 |>
  filter(LOCATION == "USA",
         obsTime == "2018") |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(SECTOR, TRANSACT, Transact, obsValue) |>
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Germany

Code
SNA_TABLE13 |>
  filter(LOCATION == "DEU",
         obsTime == "2018") |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(SECTOR, TRANSACT, Transact, obsValue) |>
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

France

Code
SNA_TABLE13 |>
  filter(LOCATION == "FRA",
         obsTime == "2018") |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(SECTOR, TRANSACT, Transact, obsValue) |>
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Japan

Code
SNA_TABLE13 |>
  filter(LOCATION == "JPN",
         obsTime == "2018") |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(SECTOR, TRANSACT, Transact, obsValue) |>
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

United Kingdom

Code
SNA_TABLE13 |>
  filter(LOCATION == "GBR",
         obsTime == "2018") |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(SECTOR, TRANSACT, Transact, obsValue) |>
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

2016 - China

Code
SNA_TABLE13 |>
  filter(LOCATION == "CHN",
         obsTime == "2016") |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(SECTOR, TRANSACT, Transact, obsValue) |>
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Ex: United States

SS1 - All sectors

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS1",
         LOCATION == "USA") |>
  filter(obsTime %in% c("1970", "1980", "1990", "2000", "2018")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SS11_S12 - Corporations

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS11_S12",
         LOCATION == "USA") |>
  filter(obsTime %in% c("1970", "1980", "1990", "2000", "2018")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SS13 - General government

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS11_S12",
         LOCATION == "USA") |>
  filter(obsTime %in% c("1970", "1980", "1990", "2000", "2018")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SS14_S15 - Households and Non-profits

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS14_S15",
         LOCATION == "USA") |>
  filter(obsTime %in% c("1970", "1980", "1990", "2000", "2018")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Ex: France

SS1 - All sectors

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS1",
         LOCATION == "FRA") |>
  filter(obsTime %in% c("1950", "1970", "1990", "2010", "2018")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SS11_S12 - Corporations

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS11_S12",
         LOCATION == "USA") |>
  filter(obsTime %in% c("1970", "1980", "1990", "2000", "2018")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SS13 - General government

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS11_S12",
         LOCATION == "USA") |>
  filter(obsTime %in% c("1970", "1980", "1990", "2000", "2018")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SS14_S15 - Households and Non-profits

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS14_S15",
         LOCATION == "USA") |>
  filter(obsTime %in% c("1970", "1980", "1990", "2000", "2018")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Ex: Japan

SS1 - All sectors

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS1",
         LOCATION == "JPN",
         obsTime %in% c("1994", "2002", "2010", "2017")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SS11_S12 - Corporations

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS11_S12",
         LOCATION == "JPN",
         obsTime %in% c("1994", "2002", "2010", "2017")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SS13 - General government

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS11_S12",
         LOCATION == "JPN",
         obsTime %in% c("1994", "2002", "2010", "2017")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SS14_S15 - Households and Non-profits

Code
SNA_TABLE13 |>
  filter(SECTOR == "SS14_S15",
         LOCATION == "JPN",
         obsTime %in% c("1994", "2002", "2010", "2017")) |>
  left_join(SNA_TABLE13_var$TRANSACT, by = "TRANSACT") |>
  left_join(SNA_TABLE1_B1_GE, by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) |> paste0("%")) |>
  select(obsTime, TRANSACT, Transact, obsValue) |>
  spread(obsTime, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Ex 1: Gross capital formation (% of GDP)

Code
SNA_TABLE13 |>
  # NFK1R: Consumption of fixed capital
  filter(TRANSACT %in% c("SP5P", "B1_GE"), #
         # SS1: Total economy
         SECTOR == "SS1") |>
  left_join(SNA_TABLE13_var$LOCATION, by = "LOCATION") |>
  select(Location, TRANSACT, obsTime, obsValue) |>
  spread(TRANSACT, obsValue) |>
  na.omit() |>
  mutate(SP5P_B1_GE = (100*SP5P / B1_GE)  |> round(1) |> paste("%")) |>
  select(Location, obsTime, SP5P_B1_GE) |>
  group_by(Location) |>
  summarise(year_first = first(obsTime),
            value_first = first(SP5P_B1_GE),
            year_last = last(obsTime),
            value_last = last(SP5P_B1_GE)) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Ex 2: Consumption of fixed capital (% of GDP)

Code
SNA_TABLE13 |>
  # NFK1R: Consumption of fixed capital
  filter(TRANSACT %in% c("SK1R", "B1_GE"), 
         SECTOR == "SS1") |>
  left_join(SNA_TABLE13_var$LOCATION, by = "LOCATION") |>
  select(Location, TRANSACT, obsTime, obsValue) |>
  spread(TRANSACT, obsValue) |>
  na.omit() |>
  mutate(SK1R_B1_GE = (100*SK1R / B1_GE)  |> round(1) |> paste("%")) |>
  select(Location, obsTime, SK1R_B1_GE) |>
  group_by(Location) |>
  summarise(year_first = first(obsTime),
            value_first = first(SK1R_B1_GE),
            year_last = last(obsTime),
            value_last = last(SK1R_B1_GE)) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Ex 3: Net capital formation (% of GDP)

Code
SNA_TABLE13 |>
  # NFK1R: Consumption of fixed capital
  filter(TRANSACT %in% c("SP5P", "B1_GE", "SK1R"), 
         SECTOR == "SS1") |>
  left_join(SNA_TABLE13_var$LOCATION, by = "LOCATION") |>
  select(Location, TRANSACT, obsTime, obsValue) |>
  spread(TRANSACT, obsValue) |>
  na.omit() |>
  mutate(net_inv_B1_GE = (100*(SP5P-SK1R) / B1_GE)  |> round(1) |> paste("%")) |>
  select(Location, obsTime, net_inv_B1_GE) |>
  group_by(Location) |>
  summarise(year_first = first(obsTime),
            value_first = first(net_inv_B1_GE),
            year_last = last(obsTime),
            value_last = last(net_inv_B1_GE)) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}