Balance sheets for non-financial assets

Data - OECD

Layout

  • OECD Website. html

SS1 - All sectors

SS11 - Non-financial corporations

SS12 - Financial corporations

SS13 - General government

SS14_S15 - Households and Non-profits

Nobs - Javascript

Code
SNA_TABLE9B %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  group_by(TRANSACT, Transact, SECTOR) %>%
  summarise(nobs = n()) %>%
  arrange(-nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Data Structure

Code
SNA_TABLE9B_var %>%
  pluck("VAR_DESC") %>%
  {if (is_html_output()) print_table(.) else .}
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

TRANSACT

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

SECTOR

Code
SNA_TABLE9B %>%
  left_join(SNA_TABLE9B_var$SECTOR, by = "SECTOR") %>%
  group_by(SECTOR, Sector) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
SECTOR Sector Nobs
NS1 Total economy 19583
NS14_S15 Households and non-profit institutions serving households 14769
NS11 Non-financial corporations 14483
NS13 General government 14321
NS12 Financial corporations 14006
NS15 Non-profit institutions serving households 3073
NS14 Households 3072

LOCATION

Code
SNA_TABLE9B %>%
  left_join(SNA_TABLE9B_var$LOCATION, by = "LOCATION") %>%
  group_by(LOCATION, Location) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(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 .}

Tables

N - Non-financial assets / Actifs non financiers

Code
SNA_TABLE9B %>%
  filter(TRANSACT == "N",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  group_by(LOCATION, SECTOR) %>%
  summarise(obsValue = last(obsValue),
            obsTime = last(obsTime)) %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  select(-obsTime) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%"),
         SECTOR = gsub("N", "", SECTOR)) %>%
  ungroup %>%
  left_join(SNA_TABLE9B_var$LOCATION, by = "LOCATION") %>%
  select(Location, SECTOR, obsValue) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Location)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  mutate(SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

N1 - Produced Assets

Code
SNA_TABLE9B %>%
  filter(TRANSACT == "N1",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  group_by(LOCATION, SECTOR) %>%
  summarise(obsValue = last(obsValue),
            obsTime = last(obsTime)) %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  select(-obsTime) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%"),
         SECTOR = gsub("N", "", SECTOR)) %>%
  ungroup %>%
  left_join(SNA_TABLE9B_var$LOCATION, by = "LOCATION") %>%
  select(Location, SECTOR, obsValue) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Location)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  mutate(SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

N11 - Fixed Assets

Code
SNA_TABLE9B %>%
  filter(TRANSACT == "N11",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  group_by(LOCATION, SECTOR) %>%
  summarise(obsValue = last(obsValue),
            obsTime = last(obsTime)) %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  select(-obsTime) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%"),
         SECTOR = gsub("N", "", SECTOR)) %>%
  ungroup %>%
  left_join(SNA_TABLE9B_var$LOCATION, by = "LOCATION") %>%
  select(Location, SECTOR, obsValue) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Location)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  mutate(SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

N1111 - Dwellings

Code
SNA_TABLE9B %>%
  filter(TRANSACT == "N1111",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  group_by(LOCATION, SECTOR) %>%
  summarise(obsValue = last(obsValue),
            obsTime = last(obsTime)) %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  select(-obsTime) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%")) %>%
  ungroup %>%
  left_join(SNA_TABLE9B_var$LOCATION, by = "LOCATION") %>%
  select(Location, SECTOR, obsValue) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Location)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  mutate(SECTOR = gsub("N", "", SECTOR),
         SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

N211 - Land

Code
SNA_TABLE9B %>%
  filter(TRANSACT == "N211",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  group_by(LOCATION, SECTOR) %>%
  summarise(obsValue = last(obsValue),
            obsTime = last(obsTime)) %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  select(-obsTime) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%"),
         SECTOR = gsub("N", "", SECTOR)) %>%
  ungroup %>%
  left_join(SNA_TABLE9B_var$LOCATION, by = "LOCATION") %>%
  select(Location, SECTOR, obsValue) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Location)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  mutate(SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

List

Code
SNA_TABLE9B %>%
  filter(grepl("N2", TRANSACT)) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  group_by(LOCATION, TRANSACT, Transact, SECTOR) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

2018

France

Code
SNA_TABLE9B %>%
  filter(LOCATION == "FRA",
         obsTime == "2018",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%")) %>%
  select(SECTOR, TRANSACT, Transact, obsValue) %>%
  mutate(SECTOR = gsub("N", "", SECTOR),
         SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

United States

Code
SNA_TABLE9B %>%
  filter(LOCATION == "USA",
         obsTime == "2018",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%")) %>%
  select(SECTOR, TRANSACT, Transact, obsValue) %>%
  mutate(SECTOR = gsub("N", "", SECTOR),
         SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

New Zealand

Code
SNA_TABLE9B %>%
  filter(LOCATION == "NZL",
         obsTime == "2017",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%")) %>%
  select(SECTOR, TRANSACT, Transact, obsValue) %>%
  mutate(SECTOR = gsub("N", "", SECTOR),
         SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Australia

Code
SNA_TABLE9B %>%
  filter(LOCATION == "AUS",
         obsTime == "2017",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%")) %>%
  select(SECTOR, TRANSACT, Transact, obsValue) %>%
  mutate(SECTOR = gsub("N", "", SECTOR),
         SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Canada

Code
SNA_TABLE9B %>%
  filter(LOCATION == "CAN",
         obsTime == "2018",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%")) %>%
  select(SECTOR, TRANSACT, Transact, obsValue) %>%
  mutate(SECTOR = gsub("N", "", SECTOR),
         SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Germany

Code
SNA_TABLE9B %>%
  filter(LOCATION == "DEU",
         obsTime == "2018",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%")) %>%
  select(SECTOR, TRANSACT, Transact, obsValue) %>%
  mutate(SECTOR = gsub("N", "", SECTOR),
         SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Japan

Code
SNA_TABLE9B %>%
  filter(LOCATION == "JPN",
         obsTime == "2018",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%")) %>%
  select(SECTOR, TRANSACT, Transact, obsValue) %>%
  mutate(SECTOR = gsub("N", "", SECTOR),
         SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

Czech Republic

Code
SNA_TABLE9B %>%
  filter(LOCATION == "CZE",
         obsTime == "2018",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%")) %>%
  select(SECTOR, TRANSACT, Transact, obsValue) %>%
  mutate(SECTOR = gsub("N", "", SECTOR),
         SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

N2 - Non-produced assets

Table

Code
SNA_TABLE9B %>%
  filter(TRANSACT == "N2",
         SECTOR %in% c("NS1", "NS11", "NS12", "NS13", "NS14_S15")) %>%
  group_by(LOCATION, SECTOR) %>%
  summarise(obsValue = last(obsValue),
            obsTime = last(obsTime)) %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  select(-obsTime) %>%
  mutate(obsValue = round(100*obsValue / B1_GE, 1) %>% paste0(., "%"),
         SECTOR = gsub("N", "", SECTOR)) %>%
  ungroup %>%
  left_join(SNA_TABLE9B_var$LOCATION, by = "LOCATION") %>%
  select(LOCATION, Location, SECTOR, obsValue) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Location)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  mutate(SECTOR = paste0('<img src="../../icon/sector/vsmall/', SECTOR, '.png" alt="All">')) %>%
  spread(SECTOR, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

United States, France, Germany, Japan, Canada, Australia

Code
load_data("oecd/SNA_TABLE9B_var2.RData")
SNA_TABLE9B %>%
  filter(LOCATION %in% c("FRA", "USA", "DEU", "GBR", "ITA", "ESP", "CAN", "JPN", "AUS"),
         SECTOR == "NS1",
         TRANSACT %in% c("N211")) %>%
  left_join(SNA_TABLE9B_var$LOCATION, by = "LOCATION") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = obsValue / B1_GE) %>%
  year_to_date %>%
  select(LOCATION, Location, date, obsValue) %>%
  left_join(colors, by = c("Location" = "country")) %>%
  ggplot + theme_minimal() + ylab("% of GDP") + xlab("") + add_6flags + scale_color_identity() +
  geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_y_continuous(breaks = 0.01*seq(0, 1300, 100),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y"))

Czech Republic, Hungary, Korea, Mexico, New Zealand, Norway, Sweden

Code
load_data("oecd/SNA_TABLE9B_var2.RData")
SNA_TABLE9B %>%
  filter(LOCATION %in% c("CZE", "HUN", "KOR", "MEX", "NZL", "NOR", "SWE"),
         SECTOR == "NS1",
         TRANSACT %in% c("N211")) %>%
  left_join(SNA_TABLE9B_var$LOCATION, by = "LOCATION") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = obsValue / B1_GE) %>%
  year_to_date %>%
  select(LOCATION, Location, date, obsValue) %>%
  left_join(colors, by = c("Location" = "country")) %>%
  ggplot + theme_minimal() + ylab("% of GDP") + xlab("") + add_6flags + scale_color_identity() +
  geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_y_continuous(breaks = 0.01*seq(0, 1300, 100),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y"))

Time Series

France

Code
SNA_TABLE9B %>%
  filter(LOCATION == "FRA",
         SECTOR == "NS1",
         TRANSACT %in% c("N", "N1", "N2")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = obsValue / B1_GE) %>%
  year_to_date %>%
  select(TRANSACT, Transact, date, obsValue) %>%
  ggplot + theme_minimal() + ylab("% of GDP") + xlab("") + 
  geom_line(aes(x = date, y = obsValue, color = Transact, linetype = Transact)) +
  scale_y_continuous(breaks = 0.01*seq(0, 1300, 100),
                     labels = scales::percent_format(accuracy = 1),
                     limits = c(0, 8)) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  
  theme(legend.position = c(0.3, 0.85),
        legend.title = element_blank())

United Kingdom

Code
SNA_TABLE9B %>%
  filter(LOCATION == "GBR",
         SECTOR == "NS1",
         TRANSACT %in% c("N", "N1", "N2")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = obsValue / B1_GE) %>%
  year_to_date %>%
  select(TRANSACT, Transact, date, obsValue) %>%
  ggplot + theme_minimal() + ylab("% of GDP") + xlab("") + 
  geom_line(aes(x = date, y = obsValue, color = Transact, linetype = Transact)) +
  scale_y_continuous(breaks = 0.01*seq(0, 1300, 100),
                     labels = scales::percent_format(accuracy = 1),
                     limits = c(0, 6)) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank())

Japan

Code
SNA_TABLE9B %>%
  filter(LOCATION == "JPN",
         SECTOR == "NS1",
         TRANSACT %in% c("N", "N1", "N2")) %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  left_join(SNA_TABLE1 %>%
              filter(TRANSACT == "B1_GE",
                     MEASURE == "C") %>%
              select(obsTime, LOCATION, B1_GE = obsValue), 
            by = c("LOCATION", "obsTime")) %>%
  mutate(obsValue = obsValue / B1_GE) %>%
  year_to_date %>%
  select(TRANSACT, Transact, date, obsValue) %>%
  ggplot + theme_minimal() + ylab("% of GDP") + xlab("") + 
  geom_line(aes(x = date, y = obsValue, color = Transact, linetype = Transact)) +
  scale_y_continuous(breaks = 0.01*seq(0, 1300, 100),
                     labels = scales::percent_format(accuracy = 1),
                     limits = c(0, 9)) +
  scale_x_date(breaks = seq(1920, 2025, 5) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%Y")) +
  
  theme(legend.position = c(0.7, 0.9),
        legend.title = element_blank())

Fixed Assets: K/L Substitution

U.S.

Code
SNA_TABLE9B %>%
  filter(TRANSACT %in% c("N1111", "B1_GE", "N1112", "N1113", "N112", "N12"),
         SECTOR == "NS1",
         LOCATION == "USA") %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  year_to_date %>%
  select(date, Transact, obsValue) %>%
  spread(Transact, obsValue) %>%
  mutate_at(vars(-`Gross domestic product (expenditure approach)`, -date), funs(./ `Gross domestic product (expenditure approach)`)) %>%
  select(-`Gross domestic product (expenditure approach)`) %>%
  gather(Transact, value, -date) %>%
  ggplot(.) + theme_minimal() + xlab("") + ylab("Fixed Assets (% of GDP)") +
  geom_line(aes(x = date, y = value, color = Transact)) +
  theme(legend.position = c(0.7, 0.5),
        legend.title = element_blank(),
        legend.text = element_text(size = 8),
        legend.key.size = unit(0.9, 'lines')) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 500, 20),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1700, 2020, 5) %>% paste0(., "-01-01") %>% as.Date,
               limits =  c(1970, 2018) %>% paste0(., "-01-01") %>% as.Date,
               labels = date_format("%Y"))

France

Code
SNA_TABLE9B %>%
  filter(TRANSACT %in% c("N1111", "B1_GE", "N1112", "N1113", "N112", "N12"),
         SECTOR == "NS1",
         LOCATION == "FRA") %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  year_to_date %>%
  select(date, Transact, obsValue) %>%
  spread(Transact, obsValue) %>%
  mutate_at(vars(-`Gross domestic product (expenditure approach)`, -date), funs(./ `Gross domestic product (expenditure approach)`)) %>%
  select(-`Gross domestic product (expenditure approach)`) %>%
  gather(Transact, value, -date) %>%
  na.omit %>%
  ggplot(.) + geom_line(aes(x = date, y = value, color = Transact)) +
  theme_minimal() +
  theme(legend.position = c(0.3, 0.90),
        legend.title = element_blank(),
        legend.text = element_text(size = 8),
        legend.key.size = unit(0.9, 'lines')) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 500, 20),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1700, 2020, 5) %>% paste0(., "-01-01") %>% as.Date,
               labels = date_format("%Y")) + 
  xlab("") + ylab("Fixed Assets (% of GDP)")

Germany

Code
SNA_TABLE9B %>%
  filter(TRANSACT %in% c("N1111", "B1_GE", "N1112", "N1113", "N112", "N12"),
         SECTOR == "NS1",
         LOCATION == "DEU") %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  year_to_date %>%
  select(date, Transact, obsValue) %>%
  spread(Transact, obsValue) %>%
  mutate_at(vars(-`Gross domestic product (expenditure approach)`, -date), funs(./ `Gross domestic product (expenditure approach)`)) %>%
  select(-`Gross domestic product (expenditure approach)`) %>%
  gather(Transact, value, -date) %>%
  na.omit %>%
  ggplot(.) + geom_line(aes(x = date, y = value, color = Transact)) +
  theme_minimal() +
  theme(legend.position = c(0.4, 0.50),
        legend.title = element_blank(),
        legend.text = element_text(size = 8),
        legend.key.size = unit(0.9, 'lines')) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 500, 20),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1700, 2020, 1) %>% paste0(., "-01-01") %>% as.Date,
               labels = date_format("%Y")) + 
  xlab("") + ylab("Fixed Assets (% of GDP)")

United Kingdom

Code
SNA_TABLE9B %>%
  filter(TRANSACT %in% c("N1111", "B1_GE", "N1112", "N1113", "N112", "N12"),
         SECTOR == "NS1",
         LOCATION == "GBR") %>%
  left_join(SNA_TABLE9B_var$TRANSACT, by = "TRANSACT") %>%
  year_to_date %>%
  select(date, Transact, obsValue) %>%
  spread(Transact, obsValue) %>%
  mutate_at(vars(-`Gross domestic product (expenditure approach)`, -date), funs(./ `Gross domestic product (expenditure approach)`)) %>%
  select(-`Gross domestic product (expenditure approach)`) %>%
  gather(Transact, value, -date) %>%
  na.omit %>%
  ggplot(.) + geom_line(aes(x = date, y = value, color = Transact)) +
  theme_minimal() +
  theme(legend.position = c(0.4, 0.50),
        legend.title = element_blank(),
        legend.text = element_text(size = 8),
        legend.key.size = unit(0.9, 'lines')) +
  
  scale_y_continuous(breaks = 0.01*seq(0, 500, 20),
                     labels = scales::percent_format(accuracy = 1)) +
  scale_x_date(breaks = seq(1700, 2020, 1) %>% paste0(., "-01-01") %>% as.Date,
               labels = date_format("%Y")) + 
  xlab("") + ylab("Fixed Assets (% of GDP)")

SNA_TABLE9B_ex1

png

Code
i_g("bib/oecd/SNA_TABLE9B_ex1.png")

Code

Location Dwellings Inventories IPP Machinery, Equip Other Buildings
Australia 113% 10.1% 13.6% 37.6% 147.9%
Austria 138.1% 29.5% 19.6% 48.7% 189.5%
Belgium 130.9% 18.7% 15.5% 49.9% 91.3%
Canada 119% 15.4% 11.4% 20.1% 88.6%
Chile 76.4% 45.4% 149.5%
Croatia 127.5% 28.5% 12.5% 59.1% 241%
Czech Republic 108.7% 43.1% 11.5% 61.5% 196.2%
Denmark 142% 14.9% 23.8% 44.3% 105%
Estonia 99.9% 24.8% 7.6% 50.8% 147.9%
Finland 145.2% 40.1% 17.5% 38.1% 120.4%
France 195.9% 18.3% 17.5% 28.9% 88.2%
Germany 158.8% 17.3% 41.8% 101.2%
Greece 159.5% 19.2% 4.9% 51.1% 96.5%
Hungary 97.9% 27.7% 9.9% 61.6% 204.4%
Ireland 88.3% 114.6% 47.1% 55.4%
Israel 101.4% 12.2% 17.9% 33% 68.7%
Italy 165.7% 22.7% 11.1% 41.9% 126%
Japan
Korea 78.3% 19.9% 23.2% 44.9% 176.9%
Latvia 153% 25.9% 4.7% 58.2% 214.9%
Lithuania 74.7% 24.7% 7.2% 42.5% 156.6%
Luxembourg 55.6% 4.9% 39.1% 113.3%
Mexico 121.9% 21.1% 3% 123.9% 115.7%
Netherlands 120.6% 13.5% 20.4% 42.4% 106.8%
New Zealand 127.4% 11.9% 31.9% 101.9%
Norway 117.4% 18% 30.9% 159.9%
Poland 35.7% 1.7% 4.4% 28.8% 77.4%
Portugal 142.9% 35.1% 7% 29% 169.7%
Romania 50.2% 41.9% 8.6% 133.1% 153.9%
Russia 166.1% 60.6% 148.8%
Slovak Republic 114% 22.8% 8.6% 79% 222.3%
Slovenia 106.3% 47.7% 10.4% 44.7% 160.6%
Spain 140.9% 19.1% 11.3% 49.2% 144.4%
Sweden 122.1% 38.2% 25.9% 50% 117.8%
United Kingdom 80.4% 13.1% 14% 30.7% 74.7%
United States 110% 13.9% 21.6% 40.2% 133.9%

SNA_TABLE9B_ex2

png

Code
i_g("bib/oecd/SNA_TABLE9B_ex2.png")

Code

TRANSACT Transact France Germany United States
B1_GE Gross domestic product (expenditure approach) 100% 100% 100%
N1 Produced assets 355.7% 320.2%
N10 Fixed assets and inventories 349.7% 319.6%
N11 Fixed assets 331.4% 319.5% 305.7%
N111 Tangible fixed assets 313.9% 302.1% 284.1%
N1111 Dwellings 195.9% 158.8% 110%
N1112 Other buildings and structures 88.2% 101.2% 133.9%
N11121 Buildings other than dwellings 33.7% 68.1% 94.8%
N11122 Other structures 54.5% 33.1% 39.1%
N1113 Machinery and equipment and weapon system 28.9% 41.8% 40.2%
N1114 Cultivated biological resources 1% 0.3% 0%
N112 Intellectual property product 17.5% 17.3% 21.6%
N1121 Mineral exploration and evaluation 0% 0%
N1122 Computer software and database 6.7% 1.9% 3.9%
N1123 Entertainment, literary or artistic originals 0.2% 2.6%
N1124 Research and development 10.6% 15% 15.1%
N1129 Other Intellectual property product 0% 0%
N12 Inventories 18.3% 13.9%