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

Data - Eurostat

Info

Data on inflation

source dataset Title .html .rData
bis CPI Consumer Price Index 2026-02-12 2026-02-12
ecb CES Consumer Expectations Survey 2025-08-28 2025-05-24
eurostat nama_10_co3_p3 Final consumption expenditure of households by consumption purpose (COICOP 3 digit) 2026-02-12 2026-02-12
eurostat prc_hicp_cow HICP - country weights 2026-02-12 2026-02-12
eurostat prc_hicp_ctrb Contributions to euro area annual inflation (in percentage points) 2026-02-12 2026-02-12
eurostat prc_hicp_inw HICP - item weights 2026-02-12 2026-02-12
eurostat prc_hicp_manr HICP (2015 = 100) - monthly data (annual rate of change) 2026-02-12 2026-02-12
eurostat prc_hicp_midx HICP (2015 = 100) - monthly data (index) 2026-02-12 2026-02-12
eurostat prc_hicp_mmor HICP (2015 = 100) - monthly data (monthly rate of change) 2026-02-12 2026-02-12
eurostat prc_ppp_ind Purchasing power parities (PPPs), price level indices and real expenditures for ESA 2010 aggregates 2026-02-12 2026-02-12
eurostat sts_inpp_m Producer prices in industry, total - monthly data 2026-02-12 2026-02-12
eurostat sts_inppd_m Producer prices in industry, domestic market - monthly data 2026-02-12 2026-02-12
eurostat sts_inppnd_m Producer prices in industry, non domestic market - monthly data 2024-06-24 2026-02-12
fred cpi Consumer Price Index 2026-02-12 2026-02-12
fred inflation Inflation 2026-02-12 2026-02-12
imf CPI Consumer Price Index - CPI 2026-02-12 2020-03-13
oecd MEI_PRICES_PPI Producer Prices - MEI_PRICES_PPI 2026-02-10 2024-04-15
oecd PPP2017 2017 PPP Benchmark results 2024-04-16 2023-07-25
oecd PRICES_CPI Consumer price indices (CPIs) 2024-04-16 2024-04-15
wdi FP.CPI.TOTL.ZG Inflation, consumer prices (annual %) 2026-02-12 2026-02-12
wdi NY.GDP.DEFL.KD.ZG Inflation, GDP deflator (annual %) 2026-02-12 2026-02-12

LAST_COMPILE

LAST_COMPILE
2026-02-14

Last

Code
prc_ppp_ind_1 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(desc(time)) %>%
  head(1) %>%
  print_table_conditional()
time Nobs
2024 18627

What’s PPP ?

PPPs are nothing more than price relatives that show the ratio of the prices in national currencies of the same good or service in different countries. For example, if the price of a litre of Coca Cola is 2.30 euros in France and 2.00 dollars in the United States, then the PPP for Coca Cola between France and the United States is the ratio 2.30 euros to 2.00 dollars or 1.15 euros to the dollar. This means that for every dollar spent on Coca Cola in the United States, 1.15 euros would have to be spent in France to obtain the same quantity and quality – or, in other words, the same volume - of Coca Cola.

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")

indic_ppp

Code
prc_ppp_ind_1 %>%
  left_join(indic_ppp, by = "indic_ppp") %>%
  group_by(indic_ppp, Indic_ppp) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
indic_ppp Indic_ppp Nobs
PLI_EU27_2020 Price level indices (EU27_2020=100) 15548
PPP_EU27_2020 Purchasing power parities (EU27_2020=1) 15548
EXP_EUR_HAB Nominal expenditure per inhabitant (in euro) 14803
EXP_EUR Nominal expenditure (in euro) 14763
EXP_NAC Nominal expenditure in national currency 14763
EXP_NAC_PC_GDP Nominal expenditure as a percentage of GDP (GDP=100) 14763
EXP_PPS_EU27_2020 Real expenditure (in PPS_EU27_2020) 13547
VI_PPS_EU27_2020_HAB Volume indices of real expenditure per capita (in PPS_EU27_2020=100) 13547
EXP_PPS_EU27_2020_HAB Real expenditure per capita (in PPS_EU27_2020) 13507

ppp_cat18

Code
prc_ppp_ind_1 %>%
  left_join(ppp_cat18, by = "ppp_cat18") %>%
  group_by(ppp_cat18, Ppp_cat18) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()

geo

Code
prc_ppp_ind_1 %>%
  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
prc_ppp_ind_1 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  print_table_conditional()
time Nobs
1995 1410
1996 1410
1997 1443
1998 1464
1999 1816
2000 1872
2001 1872
2002 1872
2003 3011
2004 3018
2005 3217
2006 3280
2007 3217
2008 3280
2009 3280
2010 3280
2011 3280
2012 3280
2013 3280
2014 3294
2015 3294
2016 3294
2017 3294
2018 3294
2019 3294
2020 3294
2021 3240
2022 18641
2023 18641
2024 18627

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(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2028, 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(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2028, 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(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2028, 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(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2028, 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(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2028, 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

France

Code
prc_ppp_ind_1 %>%
  filter(ppp_cat18 == "A0104",
         geo %in% c("FR")) %>%
  left_join(indic_ppp, by = "indic_ppp") %>%
  group_by(indic_ppp, Indic_ppp) %>%
  summarise(Nobs = n(),
            first = first(time),
            last = last(time)) %>%
  print_table_conditional()
indic_ppp Indic_ppp Nobs first last
EXP_EUR Nominal expenditure (in euro) 3 2022 2024
EXP_EUR_HAB Nominal expenditure per inhabitant (in euro) 3 2022 2024
EXP_NAC Nominal expenditure in national currency 3 2022 2024
EXP_NAC_PC_GDP Nominal expenditure as a percentage of GDP (GDP=100) 3 2022 2024
EXP_PPS_EU27_2020 Real expenditure (in PPS_EU27_2020) 3 2022 2024
EXP_PPS_EU27_2020_HAB Real expenditure per capita (in PPS_EU27_2020) 3 2022 2024
PLI_EU27_2020 Price level indices (EU27_2020=100) 3 2022 2024
PPP_EU27_2020 Purchasing power parities (EU27_2020=1) 3 2022 2024
VI_PPS_EU27_2020_HAB Volume indices of real expenditure per capita (in PPS_EU27_2020=100) 3 2022 2024

2019

Code
prc_ppp_ind_1 %>%
  filter(ppp_cat18 == "A0104",
         time == "2019",
         geo %in% c("FR", "DE", "IT")) %>%
  select(indic_ppp, geo, values) %>%
  left_join(indic_ppp, by = "indic_ppp") %>%
  spread(geo, values) %>%
  print_table_conditional()
indic_ppp Indic_ppp
NA 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(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) +
  scale_color_identity() + theme_minimal()  + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2028, 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) %>%
  left_join(indic_ppp, by = "indic_ppp") %>%
  spread(geo, values) %>%
  print_table_conditional()
indic_ppp Indic_ppp DE FR IT
EXP_EUR Nominal expenditure (in euro) 1.813709e+06 1.262531e+06 1.067942e+06
EXP_EUR_HAB Nominal expenditure per inhabitant (in euro) 2.182700e+04 1.873300e+04 1.788000e+04
EXP_NAC Nominal expenditure in national currency 1.813709e+06 1.262531e+06 1.067942e+06
EXP_NAC_PC_GDP Nominal expenditure as a percentage of GDP (GDP=100) 5.130000e+01 5.190000e+01 5.920000e+01
EXP_PPS_EU27_2020 Real expenditure (in PPS_EU27_2020) 1.694653e+06 1.113175e+06 1.051007e+06
EXP_PPS_EU27_2020_HAB Real expenditure per capita (in PPS_EU27_2020) 2.040000e+04 1.650000e+04 1.760000e+04
PLI_EU27_2020 Price level indices (EU27_2020=100) 1.070000e+02 1.134000e+02 1.016000e+02
PPP_EU27_2020 Purchasing power parities (EU27_2020=1) 1.070250e+00 1.134170e+00 1.016110e+00
VI_PPS_EU27_2020_HAB Volume indices of real expenditure per capita (in PPS_EU27_2020=100) 1.240000e+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) %>%
  left_join(indic_ppp, by = "indic_ppp") %>%
  spread(geo, values) %>%
  print_table_conditional()
indic_ppp Indic_ppp DE FR IT
EXP_EUR Nominal expenditure (in euro) 3.537280e+06 2.432207e+06 1.804067e+06
EXP_EUR_HAB Nominal expenditure per inhabitant (in euro) 4.257000e+04 3.608800e+04 3.020400e+04
EXP_NAC Nominal expenditure in national currency 3.537280e+06 2.432207e+06 1.804067e+06
EXP_NAC_PC_GDP Nominal expenditure as a percentage of GDP (GDP=100) 1.000000e+02 1.000000e+02 1.000000e+02
EXP_PPS_EU27_2020 Real expenditure (in PPS_EU27_2020) 3.205299e+06 2.240749e+06 1.812665e+06
EXP_PPS_EU27_2020_HAB Real expenditure per capita (in PPS_EU27_2020) 3.860000e+04 3.320000e+04 3.030000e+04
PLI_EU27_2020 Price level indices (EU27_2020=100) 1.104000e+02 1.085000e+02 9.950000e+01
PPP_EU27_2020 Purchasing power parities (EU27_2020=1) 1.103570e+00 1.085440e+00 9.952560e-01
VI_PPS_EU27_2020_HAB Volume indices of real expenditure per capita (in PPS_EU27_2020=100) 1.220000e+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) %>%
  left_join(indic_ppp, by = "indic_ppp") %>%
  spread(geo, values) %>%
  print_table_conditional()
indic_ppp Indic_ppp DE FR IT
EXP_EUR Nominal expenditure (in euro) 1.813709e+06 1.262531e+06 1.067942e+06
EXP_EUR_HAB Nominal expenditure per inhabitant (in euro) 2.182700e+04 1.873300e+04 1.788000e+04
EXP_NAC Nominal expenditure in national currency 1.813709e+06 1.262531e+06 1.067942e+06
EXP_NAC_PC_GDP Nominal expenditure as a percentage of GDP (GDP=100) 5.130000e+01 5.190000e+01 5.920000e+01
EXP_PPS_EU27_2020 Real expenditure (in PPS_EU27_2020) 1.694653e+06 1.113175e+06 1.051007e+06
EXP_PPS_EU27_2020_HAB Real expenditure per capita (in PPS_EU27_2020) 2.040000e+04 1.650000e+04 1.760000e+04
PLI_EU27_2020 Price level indices (EU27_2020=100) 1.070000e+02 1.134000e+02 1.016000e+02
PPP_EU27_2020 Purchasing power parities (EU27_2020=1) 1.070250e+00 1.134170e+00 1.016110e+00
VI_PPS_EU27_2020_HAB Volume indices of real expenditure per capita (in PPS_EU27_2020=100) 1.240000e+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") %>%
  left_join(geo, by = "geo") %>%
  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 .}