Structure of consumption expenditure by COICOP consumption purpose

Data - Eurostat

Info

source dataset Title .html .rData
eurostat hbs_str_t211 Structure of consumption expenditure by COICOP consumption purpose 2026-02-12 2026-02-12

Data on housing

source dataset Title .html .rData
bdf RPP Prix de l'immobilier 2026-02-12 2026-02-12
bis LONG_PP Residential property prices - detailed series 2026-01-11 2024-05-10
bis SELECTED_PP Property prices, selected series 2026-02-12 2026-02-12
ecb RPP Residential Property Price Index Statistics 2026-02-12 2026-02-12
eurostat ei_hppi_q House price index (2015 = 100) - quarterly data 2026-02-11 2026-02-12
eurostat hbs_str_t223 Mean consumption expenditure by income quintile 2025-10-11 2026-02-12
eurostat prc_hicp_midx HICP (2015 = 100) - monthly data (index) 2026-02-12 2026-02-12
eurostat prc_hpi_q House price index (2015 = 100) - quarterly data 2026-02-12 2026-02-12
fred housing House Prices 2026-02-12 2026-02-12
insee IPLA-IPLNA-2015 Indices des prix des logements neufs et Indices Notaires-Insee des prix des logements anciens 2026-02-12 2026-02-12
oecd SNA_TABLE5 Final consumption expenditure of households 2026-02-10 2023-10-19
oecd housing NA NA NA

LAST_COMPILE

LAST_COMPILE
2026-02-14

Last

Code
hbs_str_t211 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(2) %>%
  print_table_conditional()
time Nobs
2020 4763
2015 5901

coicop

All

Code
hbs_str_t211 %>%
  left_join(coicop, by = "coicop") %>%
  group_by(coicop, Coicop) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()

2-digit

Code
hbs_str_t211 %>%
  filter(nchar(coicop) == 4) %>%
  left_join(coicop, by = "coicop") %>%
  group_by(coicop, Coicop) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()
coicop Coicop Nobs
CP01 Food and non-alcoholic beverages 188
CP02 Alcoholic beverages, tobacco and narcotics 188
CP03 Clothing and footwear 188
CP04 Housing, water, electricity, gas and other fuels 188
CP05 Furnishings, household equipment and routine household maintenance 188
CP06 Health 188
CP07 Transport 188
CP08 Communications 188
CP09 Recreation and culture 188
CP10 Education 187
CP11 Restaurants and hotels 188
CP12 Miscellaneous goods and services 188

3-digit

Code
hbs_str_t211 %>%
  filter(nchar(coicop) == 5) %>%
  left_join(coicop, by = "coicop") %>%
  group_by(coicop, Coicop) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()

4-digit

Code
hbs_str_t211 %>%
  filter(nchar(coicop) == 6) %>%
  left_join(coicop, by = "coicop") %>%
  group_by(coicop, Coicop) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()

geo

Code
hbs_str_t211 %>%
  left_join(geo, by = "geo") %>%
  group_by(geo, Geo) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

time

Code
hbs_str_t211 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()
time Nobs
1988 1307
1994 2201
1999 2256
2005 7075
2010 5922
2015 5901
2020 4763

France

Table

Code
hbs_str_t211 %>%
  left_join(coicop, by = "coicop") %>%
  filter(geo == "FR",
         substr(coicop, 1, 2) == "CP",
         coicop != "CP00",
         time %in% c("2015", "2020")) %>%
  select(-unit) %>%
  select(-geo) %>%
  spread(time, values) %>%
  print_table_conditional()

2-digit

Code
hbs_str_t211 %>%
  left_join(coicop, by = "coicop") %>%
  filter(geo == "FR",
         substr(coicop, 1, 2) == "CP",
         nchar(coicop) == 4,
         coicop != "CP00",
         time %in% c("2015", "2020")) %>%
  select(-unit) %>%
  select(-geo) %>%
  spread(time, values) %>%
  print_table_conditional()
freq coicop Coicop 2015 2020
A CP01 Food and non-alcoholic beverages 143 143
A CP02 Alcoholic beverages, tobacco and narcotics 25 25
A CP03 Clothing and footwear 40 40
A CP04 Housing, water, electricity, gas and other fuels 289 289
A CP05 Furnishings, household equipment and routine household maintenance 48 48
A CP06 Health 16 16
A CP07 Transport 132 132
A CP08 Communications 24 24
A CP09 Recreation and culture 77 77
A CP10 Education 6 6
A CP11 Restaurants and hotels 55 55
A CP12 Miscellaneous goods and services 147 147

3-digit

Code
hbs_str_t211 %>%
  left_join(coicop, by = "coicop") %>%
  filter(geo == "FR",
         substr(coicop, 1, 2) == "CP",
         nchar(coicop) == 5,
         coicop != "CP00",
         time %in% c("2015", "2020")) %>%
  select(-unit) %>%
  select(-geo) %>%
  spread(time, values) %>%
  print_table_conditional()

4-digit

Code
hbs_str_t211 %>%
  left_join(coicop, by = "coicop") %>%
  filter(geo == "FR",
         substr(coicop, 1, 2) == "CP",
         nchar(coicop) == 6,
         coicop != "CP00",
         time %in% c("2015", "2020")) %>%
  select(-unit) %>%
  select(-geo) %>%
  spread(time, values) %>%
  print_table_conditional()

Table

2015

Code
hbs_str_t211 %>%
  filter(time == "2015",
         coicop %in% c("CP04", "CP041", "CP042")) %>%
  left_join(geo, by = "geo") %>%
  select_if(~ n_distinct(.) > 1) %>%
  spread(coicop, values) %>%
  arrange(-CP04) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2020

Code
hbs_str_t211 %>%
  filter(time == "2020",
         coicop %in% c("CP04", "CP041", "CP042")) %>%
  left_join(geo, by = "geo") %>%
  select_if(~ n_distinct(.) > 1) %>%
  spread(coicop, values) %>%
  arrange(-CP04) %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  mutate(Flag = gsub(" ", "-", str_to_lower(Geo)),
         Flag = paste0('<img src="../../bib/flags/vsmall/', Flag, '.png" alt="Flag">')) %>%
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}