Purchasing power parities, price level indices, nominal and real expenditures by analytical categories - based on COICOP 2018

Data - Eurostat

Info

Last observation: Annual: 2025 (N = 19,077)

First observation: Annual: 1995 (N = 1,437)

Last data update: 11 aoû 2026, 19:50. Last compile: 12 aoû 2026, 03:13

Structure

Eurostat Website

Actual individual consumption per capita

Code
include_graphics("https://ec.europa.eu/eurostat/documents/4187653/11581511/Map+AIC+per+capita+2020.jpg/fbd93f3e-ebe8-29bc-8cd3-8d790990ca30?t=1624002507913")

Volume indices of AIC and GDP per capita

Code
include_graphics("https://ec.europa.eu/eurostat/documents/4187653/11581511/AIC+GDP+per+capita+2020.jpg/c1f554b3-807e-d0b7-1337-333e3eef5d17?t=1624002507551")

Germany, France, Italy

GDP - Gross domestic product

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "GDP",
         geo %in% c("FR", "DE", "IT"),
         indic_ppp == "PPP_EU27_2020") |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(0, 4000, .05))

E01 - Final consumption expenditure

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "E01",
         geo %in% c("FR", "DE", "IT"),
         indic_ppp == "PPP_EU27_2020") |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(0, 4000, .05))

E011 - Household final consumption expenditure

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "E011",
         geo %in% c("FR", "DE", "IT"),
         indic_ppp == "PPP_EU27_2020") |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(0, 4000, .05))

A01 - Actual individual consumption

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "A01",
         geo %in% c("FR", "DE", "IT"),
         indic_ppp == "PPP_EU27_2020") |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(0, 4000, .05))

A010405 -

Germany, France, Italy

PPP_EU27_2020

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "A010405",
         geo %in% c("FR", "DE", "IT"),
         indic_ppp == "PPP_EU27_2020") |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(0, 4000, .05))

Housing, water, electricity, gas and other fuels - A0104

2019

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "A0104",
         time == "2019",
         geo %in% c("FR", "DE", "IT")) |>
  select(indic_ppp, geo, values) |>
  
  spread(geo, values) |>
  print_table_conditional()
indic_ppp
NA
:---------:

Germany, France, Italy

PPP_EU27_2020

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "A0104",
         geo %in% c("FR", "DE", "IT"),
         indic_ppp == "PPP_EU27_2020") |>
  year_to_date() |>
  
  left_join(colors, by = c("Geo" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2100, 2), "-01-01")),
               labels = date_format("%Y")) +
  xlab("") + ylab("") +
  scale_y_continuous(breaks = seq(0, 4000, .05))

Table

Household final consumption expenditure - E011

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "E011",
         time == "2019",
         geo %in% c("FR", "DE", "IT")) |>
  select(indic_ppp, geo, values) |>
  
  spread(geo, values) |>
  print_table_conditional()
indic_ppp DE FR IT
EXP_EUR 1.813709e+06 1.262531e+06 1.067942e+06
EXP_EUR_HAB 2.206400e+04 1.873300e+04 1.788000e+04
EXP_NAC 1.813709e+06 1.262531e+06 1.067942e+06
EXP_NAC_PC_GDP 5.130000e+01 5.190000e+01 5.920000e+01
EXP_PPS_EU27_2020 1.694653e+06 1.113175e+06 1.051007e+06
EXP_PPS_EU27_2020_HAB 2.060000e+04 1.650000e+04 1.760000e+04
PLI_EU27_2020 1.070000e+02 1.134000e+02 1.016000e+02
PPP_EU27_2020 1.070250e+00 1.134170e+00 1.016110e+00
VI_PPS_EU27_2020_HAB 1.250000e+02 1.000000e+02 1.070000e+02

Gross domestic product - GDP

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "GDP",
         time == "2019",
         geo %in% c("FR", "DE", "IT")) |>
  select(indic_ppp, geo, values) |>
  
  spread(geo, values) |>
  print_table_conditional()
indic_ppp DE FR IT
EXP_EUR 3.537280e+06 2.432207e+06 1.804067e+06
EXP_EUR_HAB 4.303100e+04 3.608800e+04 3.020400e+04
EXP_NAC 3.537280e+06 2.432207e+06 1.804067e+06
EXP_NAC_PC_GDP 1.000000e+02 1.000000e+02 1.000000e+02
EXP_PPS_EU27_2020 3.205299e+06 2.240749e+06 1.812665e+06
EXP_PPS_EU27_2020_HAB 3.900000e+04 3.320000e+04 3.030000e+04
PLI_EU27_2020 1.104000e+02 1.085000e+02 9.950000e+01
PPP_EU27_2020 1.103570e+00 1.085440e+00 9.952560e-01
VI_PPS_EU27_2020_HAB 1.230000e+02 1.050000e+02 9.600000e+01

Actual individual consumption - A01

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "E011",
         time == "2019",
         geo %in% c("FR", "DE", "IT")) |>
  select(indic_ppp, geo, values) |>
  
  spread(geo, values) |>
  print_table_conditional()
indic_ppp DE FR IT
EXP_EUR 1.813709e+06 1.262531e+06 1.067942e+06
EXP_EUR_HAB 2.206400e+04 1.873300e+04 1.788000e+04
EXP_NAC 1.813709e+06 1.262531e+06 1.067942e+06
EXP_NAC_PC_GDP 5.130000e+01 5.190000e+01 5.920000e+01
EXP_PPS_EU27_2020 1.694653e+06 1.113175e+06 1.051007e+06
EXP_PPS_EU27_2020_HAB 2.060000e+04 1.650000e+04 1.760000e+04
PLI_EU27_2020 1.070000e+02 1.134000e+02 1.016000e+02
PPP_EU27_2020 1.070250e+00 1.134170e+00 1.016110e+00
VI_PPS_EU27_2020_HAB 1.250000e+02 1.000000e+02 1.070000e+02

Actual Individual Consumption

Table - 2019 - Countries

Code
prc_ppp_ind_1 |>
  filter(ppp_cat18 == "A01",
         indic_ppp == "VI_PPS_EU28_HAB",
         time == "2019") |>
  
  select(-ppp_cat18, -time, -indic_ppp) |>
  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 .}