Structure of consumption expenditure by age of the reference person and COICOP consumption purpose

Data - Eurostat

Info

source dataset .html .RData
eurostat hbs_str_t224 2024-11-01 2024-10-08
insee bdf2017 2024-11-05 2023-11-21
insee if203 2024-11-05 2023-07-20

Data on housing

source dataset .html .RData
bdf RPP 2024-07-26 2024-07-01
bis LONG_PP 2024-08-09 2024-05-10
bis SELECTED_PP 2024-10-31 2024-10-31
ecb RPP 2024-10-08 2024-10-30
eurostat ei_hppi_q 2024-11-05 2024-10-23
eurostat hbs_str_t223 2024-11-05 2024-11-05
eurostat prc_hicp_midx 2024-11-01 2024-11-05
eurostat prc_hpi_q 2024-11-01 2024-10-09
fred housing 2024-11-01 2024-11-01
insee IPLA-IPLNA-2015 2024-11-05 2024-11-05
oecd housing 2024-09-15 2020-01-18
oecd SNA_TABLE5 2024-09-11 2023-10-19

LAST_COMPILE

LAST_COMPILE
2024-11-05

Last

Code
hbs_str_t224 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(2) %>%
  print_table_conditional()
time Nobs
2020 9597
2015 11990

coicop

All

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

2-digit

Code
hbs_str_t224 %>%
  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 1145
CP02 Alcoholic beverages, tobacco and narcotics 1139
CP03 Clothing and footwear 1145
CP04 Housing, water, electricity, gas and other fuels 1139
CP05 Furnishings, household equipment and routine household maintenance 1139
CP06 Health 1142
CP07 Transport 1145
CP08 Communications 1145
CP09 Recreation and culture 1145
CP10 Education 1122
CP11 Restaurants and hotels 1145
CP12 Miscellaneous goods and services 1145

3-digit

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

4-digit

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

hhtyp

Code
hbs_str_t224 %>%
  left_join(hhtyp, by = "hhtyp") %>%
  group_by(hhtyp, Hhtyp) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()
hhtyp Hhtyp Nobs
A1 Single person 10703
A1_DCH Single person with dependent children 10599
A2 Two adults 10749
A2_DCH Two adults with dependent children 10807
A_GE3 Three or more adults 10718
A_GE3_DCH Three or more adults with dependent children 10735
UNK Unknown 2054

geo

Code
hbs_str_t224 %>%
  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 .}

unit

Code
hbs_str_t224 %>%
  group_by(unit) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()
unit Nobs
PM 66365

time

Code
hbs_str_t224 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()
time Nobs
1988 3440
1994 6773
1999 5227
2005 12842
2010 16496
2015 11990
2020 9597

France - Compare

2020, HBS

Code
hbs_str_t224 %>%
  filter(time == "2020",
         geo == "FR") %>%
  left_join(coicop, by = "coicop") %>%
  select_if(~ n_distinct(.) > 1) %>%
  spread(hhtyp, values) %>%
  select_if(~ n_distinct(.) > 1) %>%
  print_table_conditional

2015, HBS

All

Code
hbs_str_t224 %>%
  filter(time == "2015",
         geo == "FR") %>%
  left_join(coicop, by = "coicop") %>%
  select_if(~ n_distinct(.) > 1) %>%
  spread(hhtyp, values) %>%
  select_if(~ n_distinct(.) > 1) %>%
  print_table_conditional

2-digit

Code
hbs_str_t224 %>%
  filter(time == "2015",
         geo == "FR",
         nchar(coicop) == 4) %>%
  left_join(coicop, by = "coicop") %>%
  select_if(~ n_distinct(.) > 1) %>%
  spread(hhtyp, values) %>%
  select_if(~ n_distinct(.) > 1) %>%
  print_table_conditional
coicop Coicop A_GE3 A_GE3_DCH A1 A1_DCH A2 A2_DCH
CP01 Food and non-alcoholic beverages 168 162 128 132 156 139
CP02 Alcoholic beverages, tobacco and narcotics 28 28 29 24 25 21
CP03 Clothing and footwear 35 46 32 57 32 48
CP04 Housing, water, electricity, gas and other fuels 261 243 366 281 283 251
CP05 Furnishings, household equipment and routine household maintenance 44 38 44 38 54 47
CP06 Health 11 12 16 17 16 16
CP07 Transport 168 151 99 127 139 143
CP08 Communications 25 27 26 30 21 23
CP09 Recreation and culture 66 70 76 77 77 80
CP10 Education 5 10 2 11 2 11
CP11 Restaurants and hotels 42 62 44 67 44 69
CP12 Miscellaneous goods and services 148 150 137 138 149 152

All quintiles

Sums

2-digit

Code
hbs_str_t224 %>%
  filter(time == "2020",
         substr(coicop, 1, 2) == "CP",
         nchar(coicop) == 4) %>%
  left_join(geo, by = "geo") %>%
  select_if(~ n_distinct(.) > 1) %>%
  group_by(hhtyp, geo, Geo) %>%
  summarise(values = sum(values)) %>%
  spread(hhtyp, values) %>%
  print_table_conditional
geo Geo A_GE3 A_GE3_DCH A1 A1_DCH A2 A2_DCH UNK
AT Austria 1000 1002 1000 1000 1001 1000 NA
BE Belgium 1000 1000 1000 1000 1000 1001 NA
BG Bulgaria 1000 999 1001 1000 998 999 NA
CY Cyprus 1001 1000 999 1001 1002 1000 NA
CZ Czechia 999 997 999 1003 1001 1000 NA
DE Germany 1001 1000 1001 999 999 999 NA
DK Denmark 1000 1001 999 1000 999 999 NA
EE Estonia 1000 1001 1001 1000 1000 1000 NA
EL Greece 1000 999 999 1000 1000 1000 NA
ES Spain 1000 1001 999 1000 1001 1000 NA
EU27_2020 European Union - 27 countries (from 2020) 1000 1000 1001 1001 1001 999 NA
FI Finland 1002 1000 1000 1001 999 1002 NA
FR France 1001 999 999 999 998 1000 NA
HR Croatia 1000 1000 998 1000 1000 1000 NA
HU Hungary 1000 1000 1001 1000 1000 1001 NA
IT Italy 998 999 1001 999 1000 999 NA
LT Lithuania 1002 998 1001 1000 999 1001 NA
LU Luxembourg 997 1000 1001 1000 1001 1000 NA
LV Latvia 999 999 1000 1001 999 1000 NA
ME Montenegro 1000 1000 1001 1000 1000 1000 NA
MT Malta 1000 999 1001 1001 1000 999 NA
NL Netherlands 1001 1000 999 999 1002 1000 NA
PL Poland 1000 999 1000 1000 999 1002 NA
PT Portugal 1001 999 1001 999 1000 999 NA
RO Romania 1001 1000 999 1001 1000 999 NA
RS Serbia 1000 998 999 1000 1000 1001 NA
SI Slovenia 999 1000 1001 999 1001 1001 NA
SK Slovakia 999 1002 999 1000 1001 1000 NA
TR Türkiye 999 1000 1001 1001 1000 1000 NA

3-digit

Code
hbs_str_t224 %>%
  filter(time == "2020",
         substr(coicop, 1, 2) == "CP",
         nchar(coicop) == 5) %>%
  left_join(geo, by = "geo") %>%
  select_if(~ n_distinct(.) > 1) %>%
  group_by(hhtyp, geo, Geo) %>%
  summarise(values = sum(values)) %>%
  spread(hhtyp, values) %>%
  print_table_conditional
geo Geo A_GE3 A_GE3_DCH A1 A1_DCH A2 A2_DCH UNK
AT Austria 1001 999 998 999 997 1000 NA
BE Belgium 1000 1001 997 999 1000 997 NA
BG Bulgaria 998 999 998 997 1000 1003 NA
CY Cyprus 996 997 1001 996 997 993 NA
CZ Czechia 1002 1003 999 997 998 997 NA
DE Germany 984 986 994 990 990 992 NA
DK Denmark 1000 997 999 1001 1004 1002 NA
EE Estonia 990 996 976 983 986 991 NA
EL Greece 1004 999 1001 1000 997 1002 NA
ES Spain 1001 1003 998 1001 1001 995 NA
FI Finland 984 983 982 974 979 976 NA
FR France 994 987 992 994 989 986 NA
HR Croatia 999 997 998 1004 994 1001 NA
HU Hungary 1000 1001 1000 998 999 999 NA
IT Italy 1002 1000 1001 997 998 1001 NA
LT Lithuania 998 999 997 999 1000 998 NA
LU Luxembourg 1003 997 1000 1000 999 999 NA
LV Latvia 1000 997 1000 998 998 998 NA
ME Montenegro 983 982 987 991 980 984 NA
MT Malta 998 999 996 999 1001 1001 NA
NL Netherlands 1001 997 1000 1001 1000 1001 NA
PL Poland 998 1000 1001 999 999 1000 NA
RS Serbia 1000 1000 997 1002 999 999 NA
SI Slovenia 998 1000 1000 1003 997 1001 NA
SK Slovakia 1000 998 1002 997 995 996 NA
TR Türkiye 1000 999 1002 1001 1000 999 NA

CP041, CP042, CP041_042

2015

France

Code
hbs_str_t224 %>%
  filter(coicop %in% c("CP041", "CP042"),
         time == "2015",
         geo %in% c("FR")) %>%
  spread(coicop, values) %>%
  mutate(CP041_042 = CP041 + CP042) %>%
  gather(coicop, values, CP041, CP042, CP041_042) %>%
  left_join(geo, by = "geo") %>%
  left_join(coicop, by = "coicop") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(Coicop = ifelse(coicop == "CP041_042", "Imputed rentals plus actual rentals", Coicop),
         hhtyp = ifelse(hhtyp == "Y_GE60", "Y60+", hhtyp),
         hhtyp = ifelse(hhtyp == "Y_LT30", "Y30-", hhtyp)) %>%
  ggplot + geom_line(aes(x = hhtyp, y = values/1000, color = Coicop, group = Coicop)) +
  theme_minimal() +
  xlab("") + ylab("Weight in CPI") +
  scale_y_continuous(breaks = 0.01*seq(-30, 50, 2),
                     labels = percent_format(accuracy = 1)) +
  theme(legend.position = c(0.2, 0.9),
        legend.title = element_blank())