Household Dashboard - HH_DASH

Data - OECD


Last observation: Q1 2023 (N = 409) · 2022 (N = 417)

First observation: 2007 (N = 315) · Q1 2007 (N = 313)

Last data update: 02 août 2026, 08:59

Last compile: 02 sept. 2026, 23:25

Structure

Nobs - Javascript

Code
HH_DASH |>
  left_join(HH_DASH_var$INDICATOR, by = "INDICATOR") |>
  group_by(INDICATOR, Indicator, FREQUENCY) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()
INDICATOR Indicator FREQUENCY Nobs
HHFC_INDEX Real household final consumption expenditure per capita index Q 2730
RGDP_INDEX GDP per capita index Q 2730
UNEMPRATE Unemployment rate Q 2707
HHFINCON Real household final consumption expenditure per capita, growth rate compared to previous quarter Q 2688
RGDP GDP per capita, growth rate compared to previous quarter Q 2688
COCONF Consumer confidence Q 2513
LAB_UR6 Labour underutilisation rate Q 2246
RHHGDI Real household gross disposable income per capita, growth rate compared to previous quarter Q 1684
ENDT Household indebtedness ratio Q 1644
SBF90GDI Household financial net worth as a percentage of GDI Q 1644
RHHGDI_INDEX Real household gross disposable income per capita Q 1611
HHSAV Household gross savings rate Q 1478
HHNT Net cash transfers to the households Q 1475
HHFC_INDEX Real household final consumption expenditure per capita index A 672
RGDP_INDEX GDP per capita index A 672
UNEMPRATE Unemployment rate A 665
HHFINCON Real household final consumption expenditure per capita, growth rate compared to previous quarter A 630
RGDP GDP per capita, growth rate compared to previous quarter A 630
COCONF Consumer confidence A 618
LAB_UR6 Labour underutilisation rate A 552
ENDT Household indebtedness ratio A 406
SBF90GDI Household financial net worth as a percentage of GDI A 406
RHHGDI_INDEX Real household gross disposable income per capita A 397
RHHGDI Real household gross disposable income per capita, growth rate compared to previous quarter A 394
HHNT Net cash transfers to the households A 379
HHSAV Household gross savings rate A 379

obsTime

Code
HH_DASH |>
  group_by(obsTime) |>
  summarise(Nobs = n()) |>
  arrange(desc(obsTime)) |>
  print_table_conditional()

HHFINCON - Real household final consumption expenditure per capita, growth rate compared to previous quarter

Table: 2022-Q2, 2022-Q1

Code
HH_DASH |>
  filter(INDICATOR == "HHFINCON",
         obsTime %in% c("2022-Q2", "2022-Q1")) %>%
  select_if(~ n_distinct(.) > 1) |>
  spread(obsTime, obsValue) |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  select(LOCATION, Location, everything()) |>
  mutate(`2022-Q1+Q2` = `2022-Q1` + `2022-Q2`) |>
  arrange(`2022-Q1+Q2`) |>
  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 .}

Table: 2022-Q2, 2022-Q1, 2021-Q4

Code
HH_DASH |>
  filter(INDICATOR == "HHFINCON",
         obsTime %in% c("2022-Q2", "2022-Q1", "2021-Q4")) %>%
  select_if(~ n_distinct(.) > 1) |>
  spread(obsTime, obsValue) |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  select(LOCATION, Location, everything()) |>
  mutate(`2022-Q1+Q2` = `2022-Q1` + `2022-Q2`) |>
  arrange(`2022-Q1+Q2`) |>
  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 .}

RHHGDI_INDEX - Real household gross disposable income per capita

All

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI_INDEX",
         FREQUENCY == "Q",
         LOCATION %in% c("FRA", "DEU", "ITA", "ESP", "NLD")) |>
  quarter_to_date() |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  group_by(LOCATION) |>
  arrange(date) |>
  mutate(obsValue = 100*obsValue/obsValue[1]) |>
  add_flag_color("Location") |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2007-01-01"), to = Sys.Date(), by = "2 years"),
               labels = date_format("%Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 2))

2015-

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI_INDEX",
         FREQUENCY == "Q",
         LOCATION %in% c("FRA", "DEU", "ITA", "ESP", "NLD")) |>
  quarter_to_date() |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  filter(date >= as.Date("2015-10-01")) |>
  group_by(LOCATION) |>
  arrange(date) |>
  mutate(obsValue = 100*obsValue/obsValue[1]) |>
  add_flag_color("Location") |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2014-10-01"), to = Sys.Date(), by = "6 months"),
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

2017-

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI_INDEX",
         FREQUENCY == "Q",
         LOCATION %in% c("FRA", "DEU", "ITA", "ESP", "NLD")) |>
  quarter_to_date() |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  filter(date >= as.Date("2017-04-01")) |>
  group_by(LOCATION) |>
  arrange(date) |>
  mutate(obsValue = 100*obsValue/obsValue[1]) |>
  add_flag_color("Location") |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2017-04-01"), to = Sys.Date(), by = "6 months"),
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

2019-

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI_INDEX",
         FREQUENCY == "Q",
         LOCATION %in% c("FRA", "DEU", "ITA", "ESP", "NLD")) |>
  quarter_to_date() |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  filter(date >= as.Date("2019-10-01")) |>
  group_by(LOCATION) |>
  arrange(date) |>
  mutate(obsValue = 100*obsValue/obsValue[1]) |>
  add_flag_color("Location") |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_x_date(breaks = seq.Date(from = as.Date("2019-10-01"), to = Sys.Date(), by = "3 months"),
               labels = date_format("%b %Y")) +
  theme(legend.position = c(0.35, 0.85),
        legend.title = element_blank()) +
  scale_y_log10(breaks = seq(10, 300, 1))

RHHGDI - Real household gross disposable income per capita, growth rate compared to previous quarter

Table: 2022-Q2, 2022-Q1

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI",
         obsTime %in% c("2022-Q2", "2022-Q1")) %>%
  select_if(~ n_distinct(.) > 1) |>
  spread(obsTime, obsValue) |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  select(LOCATION, Location, everything()) |>
  mutate(`2022-Q1+Q2` = `2022-Q1` + `2022-Q2`) |>
  arrange(`2022-Q1+Q2`) |>
  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 .}

Table: 2022-Q2, 2022-Q1, 2021-Q4

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI",
         obsTime %in% c("2022-Q2", "2022-Q1", "2021-Q4")) %>%
  select_if(~ n_distinct(.) > 1) |>
  spread(obsTime, obsValue) |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  select(LOCATION, Location, everything()) |>
  mutate(`2022-Q1+Q2` = `2022-Q1` + `2022-Q2`) |>
  arrange(`2022-Q1+Q2`) |>
  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 .}

France, Germany, Italy

2015-

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI",
         FREQUENCY == "Q",
         LOCATION %in% c("FRA", "DEU", "ITA")) |>
  quarter_to_date() |>
  filter(date >= as.Date("2015-01-01")) |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  mutate(Location = ifelse(LOCATION == "EA19", "Europe", Location)) |>
  add_flag_color("Location") |>
  group_by(Location) |>
  mutate(obsValue = obsValue/100) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) + 
  scale_color_identity() + theme_minimal() + add_3flags +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  ylab("Real household gross disposable income per capita\ngrowth rate compared to previous quarter") + xlab("")

2019-

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI",
         FREQUENCY == "Q",
         LOCATION %in% c("FRA", "DEU", "ITA")) |>
  quarter_to_date() |>
  filter(date >= as.Date("2019-01-01")) |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  add_flag_color("Location") |>
  group_by(Location) |>
  mutate(obsValue = obsValue/100) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) + 
  scale_color_identity() + theme_minimal() + add_3flags +
  scale_x_date(breaks = "6 months",
               labels = date_format("%Y %b")) + 
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  ylab("Real household gross disposable income per capita\ngrowth rate compared to previous quarter") + xlab("")

Spain, Netherlands, Portugal

2015-

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI",
         FREQUENCY == "Q",
         LOCATION %in% c("ESP", "NLD", "PRT")) |>
  quarter_to_date() |>
  filter(date >= as.Date("2015-01-01")) |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  mutate(Location = ifelse(LOCATION == "EA19", "Europe", Location)) |>
  add_flag_color("Location") |>
  group_by(Location) |>
  mutate(obsValue = obsValue/100) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) + 
  scale_color_identity() + theme_minimal() + add_3flags +
  scale_x_date(breaks = seq(1920, 2100, 1) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) + 
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  ylab("Real household gross disposable income per capita\ngrowth rate compared to previous quarter") + xlab("")

2019-

Code
HH_DASH |>
  filter(INDICATOR == "RHHGDI",
         FREQUENCY == "Q",
         LOCATION %in% c("ESP", "NLD", "PRT")) |>
  quarter_to_date() |>
  filter(date >= as.Date("2019-01-01")) |>
  left_join(HH_DASH_var$LOCATION, by = "LOCATION") |>
  add_flag_color("Location") |>
  group_by(Location) |>
  mutate(obsValue = obsValue/100) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) + 
  scale_color_identity() + theme_minimal() + add_3flags +
  scale_x_date(breaks = "6 months",
               labels = date_format("%Y %b")) + 
  scale_y_continuous(breaks = 0.01*seq(-30, 30, 1),
                labels = percent_format(a = 1)) + 
  ylab("Real household gross disposable income per capita\ngrowth rate compared to previous quarter") + xlab("")