Structure of consumption expenditure by activity and employment status of the reference person and COICOP consumption purpose
Data - Eurostat
Info
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-01 | 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_t221 group_by(time) %>%
summarise(Nobs = n()) %>%
arrange(desc(time)) %>%
head(2) %>%
print_table_conditional()
time | Nobs |
---|---|
2020 | 9785 |
2015 | 12108 |
coicop
All
Code
%>%
hbs_str_t221 left_join(coicop, by = "coicop") %>%
group_by(coicop, Coicop) %>%
summarise(Nobs = n()) %>%
print_table_conditional()
2-digit
Code
%>%
hbs_str_t221 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 | 1119 |
CP02 | Alcoholic beverages, tobacco and narcotics | 1116 |
CP03 | Clothing and footwear | 1119 |
CP04 | Housing, water, electricity, gas and other fuels | 1119 |
CP05 | Furnishings, household equipment and routine household maintenance | 1119 |
CP06 | Health | 1116 |
CP07 | Transport | 1116 |
CP08 | Communications | 1119 |
CP09 | Recreation and culture | 1119 |
CP10 | Education | 1101 |
CP11 | Restaurants and hotels | 1116 |
CP12 | Miscellaneous goods and services | 1119 |
3-digit
Code
%>%
hbs_str_t221 filter(nchar(coicop) == 5) %>%
left_join(coicop, by = "coicop") %>%
group_by(coicop, Coicop) %>%
summarise(Nobs = n()) %>%
print_table_conditional()
4-digit
Code
%>%
hbs_str_t221 filter(nchar(coicop) == 6) %>%
left_join(coicop, by = "coicop") %>%
group_by(coicop, Coicop) %>%
summarise(Nobs = n()) %>%
print_table_conditional()
wstatus
Code
%>%
hbs_str_t221 left_join(wstatus, by = "wstatus") %>%
group_by(wstatus, Wstatus) %>%
summarise(Nobs = n()) %>%
print_table_conditional()
wstatus | Wstatus | Nobs |
---|---|---|
INAC_OTH | Other persons outside the labour force (former name: inactive persons) | 10075 |
MW_IS | Manual workers in industry and services | 10150 |
NMW_IS | Non-manual workers in industry and services | 9986 |
NSAL | Employed persons except employees | 10343 |
RET | Retired persons | 10201 |
UNE | Unemployed persons | 10021 |
UNK | Unknown | 3859 |
geo
Code
%>%
hbs_str_t221 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_t221 group_by(unit) %>%
summarise(Nobs = n()) %>%
print_table_conditional()
unit | Nobs |
---|---|
PM | 64635 |
time
Code
%>%
hbs_str_t221 group_by(time) %>%
summarise(Nobs = n()) %>%
print_table_conditional()
time | Nobs |
---|---|
1988 | 3310 |
1994 | 5529 |
1999 | 4870 |
2005 | 11381 |
2010 | 17652 |
2015 | 12108 |
2020 | 9785 |
France - Compare
2020, HBS
Code
%>%
hbs_str_t221 filter(time == "2020",
== "FR") %>%
geo left_join(coicop, by = "coicop") %>%
select_if(~ n_distinct(.) > 1) %>%
spread(wstatus, values) %>%
select_if(~ n_distinct(.) > 1) %>%
print_table_conditional
2015, HBS
All
Code
%>%
hbs_str_t221 filter(time == "2015",
== "FR") %>%
geo left_join(coicop, by = "coicop") %>%
select_if(~ n_distinct(.) > 1) %>%
spread(wstatus, values) %>%
select_if(~ n_distinct(.) > 1) %>%
print_table_conditional
2-digit
Code
%>%
hbs_str_t221 filter(time == "2015",
== "FR",
geo nchar(coicop) == 4) %>%
left_join(coicop, by = "coicop") %>%
select_if(~ n_distinct(.) > 1) %>%
spread(wstatus, values) %>%
select_if(~ n_distinct(.) > 1) %>%
print_table_conditional
coicop | Coicop | INAC_OTH | MW_IS | NMW_IS | NSAL | RET | UNE | UNK |
---|---|---|---|---|---|---|---|---|
CP01 | Food and non-alcoholic beverages | 154 | 145 | 126 | 125 | 168 | 152 | 124 |
CP02 | Alcoholic beverages, tobacco and narcotics | 39 | 32 | 22 | 24 | 23 | 32 | 23 |
CP03 | Clothing and footwear | 51 | 47 | 46 | 38 | 24 | 49 | 40 |
CP04 | Housing, water, electricity, gas and other fuels | 316 | 276 | 270 | 262 | 324 | 311 | 304 |
CP05 | Furnishings, household equipment and routine household maintenance | 39 | 41 | 47 | 47 | 56 | 38 | 45 |
CP06 | Health | 14 | 15 | 16 | 12 | 17 | 17 | 9 |
CP07 | Transport | 89 | 147 | 140 | 165 | 108 | 113 | 215 |
CP08 | Communications | 35 | 28 | 22 | 21 | 21 | 35 | 16 |
CP09 | Recreation and culture | 70 | 71 | 84 | 83 | 72 | 70 | 78 |
CP10 | Education | 24 | 5 | 8 | 10 | 1 | 5 | 3 |
CP11 | Restaurants and hotels | 52 | 50 | 72 | 70 | 29 | 46 | 46 |
CP12 | Miscellaneous goods and services | 115 | 143 | 147 | 142 | 156 | 133 | 98 |
All quintiles
Sums
2-digit
Code
%>%
hbs_str_t221 filter(time == "2020",
substr(coicop, 1, 2) == "CP",
nchar(coicop) == 4) %>%
left_join(geo, by = "geo") %>%
select_if(~ n_distinct(.) > 1) %>%
group_by(wstatus, geo, Geo) %>%
summarise(values = sum(values)) %>%
spread(wstatus, values) %>%
print_table_conditional
geo | Geo | INAC_OTH | MW_IS | NMW_IS | NSAL | RET | UNE | UNK |
---|---|---|---|---|---|---|---|---|
AT | Austria | 1000 | 1002 | 999 | 1000 | 1002 | 999 | NA |
BE | Belgium | 1000 | 999 | 998 | 1000 | 998 | 999 | NA |
BG | Bulgaria | 1000 | 1002 | 1000 | 999 | 999 | 1002 | NA |
CY | Cyprus | 1001 | 1000 | 999 | 998 | 1000 | 1001 | NA |
CZ | Czechia | NA | NA | NA | NA | NA | NA | 1000 |
DE | Germany | 1000 | 1000 | 1000 | 999 | 1001 | 1000 | NA |
DK | Denmark | 1001 | 999 | 1001 | 1000 | 1000 | 1000 | 1001 |
EE | Estonia | 1002 | 1001 | 1001 | 1001 | 1000 | 1000 | 999 |
EL | Greece | 1002 | 998 | 999 | 997 | 1000 | 999 | NA |
ES | Spain | 1000 | 1001 | 1000 | 999 | 999 | 1002 | NA |
EU27_2020 | European Union - 27 countries (from 2020) | 1000 | 1001 | 1001 | 1001 | 1000 | 999 | NA |
FI | Finland | 999 | 1000 | 1000 | 1000 | 1001 | 1001 | NA |
FR | France | 998 | 1000 | 1000 | 999 | 999 | 1001 | 1001 |
HR | Croatia | 1000 | 999 | 1000 | 999 | 999 | 999 | NA |
HU | Hungary | 1001 | 1001 | 999 | 1002 | 1002 | 1000 | 1000 |
IT | Italy | 999 | 1000 | 1000 | 1002 | 999 | 999 | 999 |
LT | Lithuania | 1000 | 1001 | 1000 | 1001 | 1001 | 1000 | NA |
LU | Luxembourg | 1001 | 1000 | 1001 | 999 | 1002 | 1000 | NA |
LV | Latvia | 1000 | 999 | 1002 | 1002 | 1001 | 1000 | NA |
ME | Montenegro | 1002 | 1001 | 999 | 999 | 999 | 1000 | NA |
MT | Malta | 1000 | 1000 | 999 | 999 | 1000 | 998 | 1001 |
NL | Netherlands | 999 | NA | NA | 1001 | 1000 | 1000 | 999 |
PL | Poland | 1001 | 1000 | 998 | 1001 | 1001 | 1000 | 1000 |
PT | Portugal | NA | NA | NA | NA | NA | NA | 1000 |
RO | Romania | 1001 | 1000 | 998 | 999 | 1001 | 999 | 999 |
RS | Serbia | 1000 | 1000 | 1002 | 1000 | 999 | 999 | NA |
SI | Slovenia | 1001 | 1001 | 1001 | 1000 | 1000 | 998 | 1000 |
SK | Slovakia | 1000 | 1002 | 1001 | 999 | 1000 | 1000 | NA |
TR | Türkiye | 1001 | 999 | 1001 | 1001 | 1000 | 1001 | 1001 |
3-digit
Code
%>%
hbs_str_t221 filter(time == "2020",
substr(coicop, 1, 2) == "CP",
nchar(coicop) == 5) %>%
left_join(geo, by = "geo") %>%
select_if(~ n_distinct(.) > 1) %>%
group_by(wstatus, geo, Geo) %>%
summarise(values = sum(values)) %>%
spread(wstatus, values) %>%
print_table_conditional
geo | Geo | INAC_OTH | MW_IS | NMW_IS | NSAL | RET | UNE | UNK |
---|---|---|---|---|---|---|---|---|
AT | Austria | 1000 | 999 | 1000 | 1002 | 998 | 1004 | NA |
BE | Belgium | 1001 | 998 | 998 | 1002 | 1000 | 998 | NA |
BG | Bulgaria | 998 | 999 | 1001 | 1000 | 998 | 996 | NA |
CY | Cyprus | 994 | 998 | 998 | 1000 | 993 | 996 | NA |
CZ | Czechia | NA | NA | NA | NA | NA | NA | 1000 |
DE | Germany | 978 | 988 | 992 | 988 | 993 | 999 | NA |
DK | Denmark | 998 | 1002 | 1003 | 1002 | 999 | 1002 | 1003 |
EE | Estonia | 984 | 986 | 989 | 988 | 984 | 983 | 978 |
EL | Greece | 999 | 999 | 1000 | 1000 | 999 | 995 | NA |
ES | Spain | 998 | 998 | 1000 | 1001 | 1000 | 1000 | NA |
FI | Finland | 979 | 986 | 970 | 973 | 990 | 981 | NA |
FR | France | 994 | 995 | 988 | 982 | 990 | 1000 | 998 |
HR | Croatia | 1001 | 1000 | 1003 | 999 | 995 | 998 | NA |
HU | Hungary | 1003 | 998 | 997 | 1003 | 1001 | 1000 | 1001 |
IT | Italy | 996 | 1000 | 999 | 1001 | 998 | 1003 | 1002 |
LT | Lithuania | 999 | 1001 | 1000 | 1003 | 999 | 997 | NA |
LU | Luxembourg | 1002 | 1001 | 1001 | 998 | 997 | 1000 | NA |
LV | Latvia | 998 | 1002 | 1001 | 997 | 1001 | 1000 | NA |
ME | Montenegro | 989 | 981 | 987 | 989 | 982 | 981 | NA |
MT | Malta | 1003 | 999 | 1001 | 1000 | 999 | 999 | 998 |
NL | Netherlands | 998 | NA | NA | 1000 | 999 | 999 | 1002 |
PL | Poland | 1000 | 997 | 996 | 996 | 996 | 1001 | 999 |
RS | Serbia | 1002 | 996 | 999 | 1002 | 999 | 1000 | NA |
SI | Slovenia | 999 | 998 | 1000 | 999 | 1002 | 996 | 999 |
SK | Slovakia | 998 | 1000 | 1001 | 998 | 998 | 999 | NA |
TR | Türkiye | 998 | 1002 | 999 | 1002 | 1001 | 997 | 1002 |
CP041, CP042, CP041_042
2015
France
Code
%>%
hbs_str_t221 filter(coicop %in% c("CP041", "CP042"),
== "2015",
time %in% c("FR")) %>%
geo spread(coicop, values) %>%
mutate(CP041_042 = CP041 + CP042) %>%
gather(coicop, values, CP041, CP042, CP041_042) %>%
left_join(wstatus, by = "wstatus") %>%
left_join(coicop, by = "coicop") %>%
mutate(Coicop = ifelse(coicop == "CP041_042", "Imputed rentals plus actual rentals", Coicop),
wstatus = ifelse(wstatus == "Y_GE60", "Y60+", wstatus),
wstatus = ifelse(wstatus == "Y_LT30", "Y30-", wstatus)) %>%
+ geom_line(aes(x = Wstatus, y = values/1000, color = Coicop, group = Coicop)) +
ggplot 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(),
axis.text.x = element_text(angle = 45, vjust = 1, hjust = 1))