Production in industry - quarterly data

Data - Eurostat

Info

Data on industry

Code
industry %>%
  arrange(-(dataset == "sts_inpr_m")) %>%
  mutate(Title = read_lines(paste0("~/iCloud/website/data/", source, "/",dataset, ".qmd"), skip = 1, n_max = 1) %>% gsub("title: ", "", .) %>% gsub("\"", "", .)) %>%
  mutate(Download = as.Date(file.info(paste0("~/iCloud/website/data/", source, "/", dataset, ".RData"))$mtime),
         Compile = as.Date(file.info(paste0("~/iCloud/website/data/", source, "/", dataset, ".html"))$mtime)) %>%
  mutate(Compile = paste0("[", Compile, "](https://fgeerolf.com/data/", source, "/", dataset, '.html)')) %>%
  print_table_conditional()
source dataset Title Download Compile
eurostat sts_inpr_m Production in industry - monthly data 2026-03-13 [2026-03-14]
ec INDUSTRY Industry (sector data) 2023-10-01 [2026-01-16]
eurostat ei_isin_m Industry - monthly data - index (2015 = 100) (NACE Rev. 2) - ei_isin_m 2026-03-13 [2026-03-13]
eurostat htec_trd_group4 High-tech trade by high-tech group of products in million euro (from 2007, SITC Rev. 4) 2026-03-13 [2026-03-13]
eurostat nama_10_a64 National accounts aggregates by industry (up to NACE A*64) 2026-03-13 [2026-03-14]
eurostat nama_10_a64_e National accounts employment data by industry (up to NACE A*64) 2026-03-13 [2026-03-14]
eurostat namq_10_a10_e Employment A*10 industry breakdowns 2026-03-13 [2025-05-24]
eurostat road_eqr_carmot New registrations of passenger cars by type of motor energy and engine size - road_eqr_carmot 2026-03-13 [2026-03-14]
eurostat sts_inpp_m Producer prices in industry, total - monthly data 2026-03-13 [2026-03-14]
eurostat sts_inppd_m Producer prices in industry, domestic market - monthly data 2026-03-13 [2026-03-14]
eurostat sts_intvnd_m Turnover in industry, non domestic market - monthly data - sts_intvnd_m 2026-03-13 [2026-03-12]
fred industry Manufacturing, Industry 2026-03-13 [2026-03-13]
oecd ALFS_EMP Employment by activities and status (ALFS) 2025-05-24 [2024-04-16]
oecd BERD_MA_SOF Business enterprise R&D expenditure by main activity (focussed) and source of funds 2023-09-09 [2024-04-16]
oecd GBARD_NABS2007 Government budget allocations for R and D 2023-11-22 [2024-04-16]
oecd MEI_REAL Production and Sales (MEI) 2025-05-24 [2024-05-12]
oecd MSTI_PUB Main Science and Technology Indicators 2025-05-24 [2024-09-15]
oecd SNA_TABLE4 PPPs and exchange rates 2025-05-24 [2024-09-15]
wdi NV.IND.EMPL.KD Industry, value added per worker (constant 2010 USD) 2026-03-13 [2024-01-06]
wdi NV.IND.MANF.CD Manufacturing, value added (current USD) 2026-03-13 [2026-03-13]
wdi NV.IND.MANF.ZS Manufacturing, value added (% of GDP) 2026-03-13 [2025-05-24]
wdi NV.IND.TOTL.KD Industry (including construction), value added (constant 2015 USD) - NV.IND.TOTL.KD 2026-03-13 [2024-01-06]
wdi NV.IND.TOTL.ZS Industry, value added (including construction) (% of GDP) 2026-03-13 [2025-05-24]
wdi SL.IND.EMPL.ZS Employment in industry (% of total employment) 2026-03-13 [2026-03-13]
wdi TX.VAL.MRCH.CD.WT Merchandise exports (current USD) 2026-03-13 [2024-01-06]

nace_r2

Code
sts_inpr_q %>%
  left_join(nace_r2, by = "nace_r2") %>%
  group_by(nace_r2, Nace_r2) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

s_adj

Code
sts_inpr_q %>%
  left_join(s_adj, by = "s_adj") %>%
  group_by(s_adj, S_adj) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
s_adj S_adj Nobs
CA Calendar adjusted data, not seasonally adjusted data 2001408
SCA Seasonally and calendar adjusted data 1953060
NSA Unadjusted data (i.e. neither seasonally adjusted nor calendar adjusted data) 1053170

unit

Code
sts_inpr_q %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
unit Unit Nobs
I15 Index, 2015=100 1439409
I21 Index, 2021=100 1398638
I10 Index, 2010=100 973090
PCH_PRE Percentage change on previous period 600429
PCH_SM Percentage change compared to same period in previous year 596072

indic_bt

Code
sts_inpr_q %>%
  left_join(indic_bt, by = "indic_bt") %>%
  group_by(indic_bt, Indic_bt) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
indic_bt Indic_bt Nobs
PRD Production (volume) 5007638

geo

Code
sts_inpr_q %>%
  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
sts_inpr_q %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Industrial Production

France, Germany, Italy

Code
sts_inpr_q %>%
  filter(nace_r2 == "C",
         unit == "I15",
         geo %in% c("FR", "DE", "IT"),
         s_adj == "SCA") %>%
  select(geo, time, values) %>%
  group_by(geo) %>%
  mutate(values = 100*values/values[time == "1997Q1"]) %>%
  left_join(geo, by = "geo") %>%
  mutate(Geo = ifelse(geo == "DE", "Germany", Geo)) %>%
  quarter_to_date %>%
  ggplot() + ylab("Industrial Production") + xlab("") + theme_minimal() +
  geom_line(aes(x = date, y = values, color = Geo)) +
  scale_color_manual(values = c("#0055a4", "#000000", "#008c45")) +
  scale_x_date(breaks = seq(1920, 2025, 2) %>% paste0("-01-01") %>% as.Date,
               labels = date_format("%y")) +
  geom_image(data = tibble(date = rep(as.Date("2022-01-01"), 3),
                           value = c(110, 140, 85),
                           image = c("~/iCloud/bib/flags/france.png",
                                     "~/iCloud/bib/flags/germany.png",
                                     "~/iCloud/bib/flags/italy.png")),
             aes(x = date, y = value, image = image), asp = 1.5) +
  theme(legend.position = "none") +
  scale_y_log10(breaks = seq(-60, 300, 10))