Business enterprise R&D expenditure by main activity (focussed) and source of funds

Data - OECD

Info

Data on industry

source dataset Title Download Compile
oecd BERD_MA_SOF Business enterprise R&D expenditure by main activity (focussed) and source of funds NA [2026-08-11]
ec INDUSTRY Industry (sector data) 2026-08-12 [2026-08-12]
eurostat ei_isin_m Industry - monthly data - index (2015 = 100) (NACE Rev. 2) - ei_isin_m NA [2026-08-11]
eurostat htec_trd_group4 High-tech trade by high-tech group of products in million euro (from 2007, SITC Rev. 4) NA [2026-08-11]
eurostat nama_10_a64 National accounts aggregates by industry (up to NACE A*64) NA [2026-08-11]
eurostat nama_10_a64_e National accounts employment data by industry (up to NACE A*64) NA [2026-08-11]
eurostat namq_10_a10_e Employment A*10 industry breakdowns NA [2026-08-12]
eurostat road_eqr_carmot New registrations of passenger cars by type of motor energy and engine size - road_eqr_carmot NA [2026-08-12]
eurostat sts_inpp_m Producer prices in industry, total - monthly data NA [2026-08-12]
eurostat sts_inppd_m Producer prices in industry, domestic market - monthly data NA [2026-08-12]
eurostat sts_inpr_m Production in industry - monthly data NA [2026-08-12]
eurostat sts_intvnd_m Turnover in industry, non domestic market - monthly data - sts_intvnd_m NA [2026-08-12]
fred industry Manufacturing, Industry NA [2026-08-12]
oecd ALFS_EMP Employment by activities and status (ALFS) NA [2026-08-13]
oecd GBARD_NABS2007 Government budget allocations for R and D NA [2026-08-11]
oecd MEI_REAL Production and Sales (MEI) NA [2026-08-11]
oecd MSTI_PUB Main Science and Technology Indicators NA [2026-08-11]
oecd SNA_TABLE4 PPPs and exchange rates NA [2026-08-12]
wdi NV.IND.EMPL.KD Industry, value added per worker (constant 2010 USD) NA [2026-08-12]
wdi NV.IND.MANF.CD Manufacturing, value added (current USD) NA [2026-08-12]
wdi NV.IND.MANF.ZS Manufacturing, value added (% of GDP) NA [2026-08-12]
wdi NV.IND.TOTL.KD Industry (including construction), value added (constant 2015 USD) - NV.IND.TOTL.KD NA [2026-08-12]
wdi NV.IND.TOTL.ZS Industry, value added (including construction) (% of GDP) NA [2026-08-12]
wdi SL.IND.EMPL.ZS Employment in industry (% of total employment) NA [2026-08-12]
wdi TX.VAL.MRCH.CD.WT Merchandise exports (current USD) NA [2026-08-12]

LAST_COMPILE

LAST_COMPILE
2026-08-13

Last

obsTime Nobs
2020 4749

COUNTRY

Code
BERD_MA_SOF |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  group_by(COUNTRY, Country) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Country)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

INDU_MAIN_ACT

Code
BERD_MA_SOF |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  group_by(INDU_MAIN_ACT, Indu_main_act) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

SECTFUND

Code
BERD_MA_SOF |>
  left_join(BERD_MA_SOF_var$SECTFUND, by = "SECTFUND") |>
  group_by(SECTFUND, Sectfund) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
SECTFUND Sectfund Nobs
_T Total funding 38058
BES Business enterprise sector 36678
GOV Government sector 35442
ROW Rest of the world (ROW) 34647
PNP Private non-profit sector 28224
HES Higher education sector 25755

MEASURE

Code
BERD_MA_SOF |>
  left_join(BERD_MA_SOF_var$MEASURE, by = "MEASURE") |>
  group_by(MEASURE, Measure) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) %>%
  {if (is_html_output()) print_table(.) else .}
MEASURE Measure Nobs
DC6 PPP Dollars - Current prices 66268
DF6 2015 Dollars - Constant prices and PPPs 66268
MIO_NAC National Currency 66268

obsTime

Code
BERD_MA_SOF |>
  group_by(obsTime) |>
  summarise(Nobs = n()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

France - 2030

Code
BERD_MA_SOF |>
  filter(COUNTRY == "FRA") |>
  select(obsTime, INDU_MAIN_ACT, SECTFUND, MEASURE, obsValue) |>
  group_by(INDU_MAIN_ACT, SECTFUND, MEASURE) |>
  arrange(obsTime) |>
  summarise(Nobs = n(),
            first = first(obsTime),
            last = last(obsTime)) |>
  print_table_conditional()

Data

Percentage of R&D done in manufacturing

2018

Code
BERD_MA_SOF |>
  filter(obsTime == 2017,
         MEASURE == "DF6",
         SECTFUND == "_T",
         COUNTRY %in% c("DEU", "FRA", "GBR", "ITA")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(Country, INDU_MAIN_ACT, Indu_main_act, obsValue) |>
  spread(Country, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

R&D in industry and telecommunications

2018 (%)

Code
BERD_MA_SOF |>
  filter(obsTime == 2018,
         MEASURE == "DF6",
         SECTFUND == "_T",
         INDU_MAIN_ACT %in% c("C", "J", "_T")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(COUNTRY, Country, Indu_main_act, obsValue) |>
  spread(Indu_main_act, obsValue) |>
  mutate(`MANUFACTURING (C)` = 100*`MANUFACTURING (C)` / `TOTAL BERD`,
         `INFORMATION AND COMMUNICATION (J)` = 100*`INFORMATION AND COMMUNICATION (J)` / `TOTAL BERD`) |>
  arrange(-`MANUFACTURING (C)`) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Country)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2017

Code
BERD_MA_SOF |>
  filter(obsTime == 2017,
         MEASURE == "DF6",
         SECTFUND == "_T",
         INDU_MAIN_ACT %in% c("C", "J", "_T")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(COUNTRY, Country, Indu_main_act, obsValue) |>
  spread(Indu_main_act, obsValue) |>
  mutate(`MANUFACTURING (C)` = 100*`MANUFACTURING (C)` / `TOTAL BERD`,
         `INFORMATION AND COMMUNICATION (J)` = 100*`INFORMATION AND COMMUNICATION (J)` / `TOTAL BERD`) |>
  arrange(-`MANUFACTURING (C)`) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Country)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2016

Code
BERD_MA_SOF |>
  filter(obsTime == 2016,
         MEASURE == "DF6",
         SECTFUND == "_T",
         INDU_MAIN_ACT %in% c("C", "J", "_T")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(COUNTRY, Country, Indu_main_act, obsValue) |>
  spread(Indu_main_act, obsValue) |>
  mutate(`MANUFACTURING (C)` = 100*`MANUFACTURING (C)` / `TOTAL BERD`,
         `INFORMATION AND COMMUNICATION (J)` = 100*`INFORMATION AND COMMUNICATION (J)` / `TOTAL BERD`) |>
  arrange(-`MANUFACTURING (C)`) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Country)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2015

Code
BERD_MA_SOF |>
  filter(obsTime == 2015,
         MEASURE == "DF6",
         SECTFUND == "_T",
         INDU_MAIN_ACT %in% c("C", "J", "_T")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(COUNTRY, Country, Indu_main_act, obsValue) |>
  spread(Indu_main_act, obsValue) |>
  mutate(`MANUFACTURING (C)` = 100*`MANUFACTURING (C)` / `TOTAL BERD`,
         `INFORMATION AND COMMUNICATION (J)` = 100*`INFORMATION AND COMMUNICATION (J)` / `TOTAL BERD`) |>
  arrange(-`MANUFACTURING (C)`) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Country)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2014

Code
BERD_MA_SOF |>
  filter(obsTime == 2014,
         MEASURE == "DF6",
         SECTFUND == "_T",
         INDU_MAIN_ACT %in% c("C", "J", "_T")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(COUNTRY, Country, Indu_main_act, obsValue) |>
  spread(Indu_main_act, obsValue) |>
  mutate(`MANUFACTURING (C)` = 100*`MANUFACTURING (C)` / `TOTAL BERD`,
         `INFORMATION AND COMMUNICATION (J)` = 100*`INFORMATION AND COMMUNICATION (J)` / `TOTAL BERD`) |>
  arrange(-`MANUFACTURING (C)`) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Country)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

2013

Code
BERD_MA_SOF |>
  filter(obsTime == 2013,
         MEASURE == "DF6",
         SECTFUND == "_T",
         INDU_MAIN_ACT %in% c("C", "J", "_T")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(COUNTRY, Country, Indu_main_act, obsValue) |>
  spread(Indu_main_act, obsValue) |>
  mutate(`MANUFACTURING (C)` = round(100*`MANUFACTURING (C)` / `TOTAL BERD`, 1),
         `INFORMATION AND COMMUNICATION (J)` = round(100*`INFORMATION AND COMMUNICATION (J)` / `TOTAL BERD`, 1)) |>
  arrange(-`MANUFACTURING (C)`) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Country)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

SECTFUND - Total

2018

Germany, France, UK, Italy

Code
BERD_MA_SOF |>
  filter(obsTime == 2017,
         MEASURE == "DF6",
         SECTFUND == "_T",
         COUNTRY %in% c("DEU", "FRA", "GBR", "ITA")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(Country, INDU_MAIN_ACT, Indu_main_act, obsValue) |>
  spread(Country, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

Australia, Austria, UK, US

Code
BERD_MA_SOF |>
  filter(obsTime == 2017,
         MEASURE == "DF6",
         SECTFUND == "_T",
         COUNTRY %in% c("AUS", "AUT", "GBR", "USA")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(Country, INDU_MAIN_ACT, Indu_main_act, obsValue) |>
  spread(Country, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

2011

Code
BERD_MA_SOF |>
  filter(obsTime == 2011,
         MEASURE == "DF6",
         SECTFUND == "_T",
         COUNTRY %in% c("DEU", "FRA", "GBR", "ITA")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(Country, INDU_MAIN_ACT, Indu_main_act, obsValue) |>
  spread(Country, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

2015

Code
BERD_MA_SOF |>
  filter(obsTime == 2015,
         MEASURE == "DF6",
         SECTFUND == "_T",
         COUNTRY %in% c("DEU", "FRA", "GBR", "ITA")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(Country, INDU_MAIN_ACT, Indu_main_act, obsValue) |>
  spread(Country, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}

2013

Code
BERD_MA_SOF |>
  filter(obsTime == 2013,
         MEASURE == "DF6",
         SECTFUND == "_T",
         COUNTRY %in% c("DEU", "FRA", "GBR", "ITA")) |>
  left_join(BERD_MA_SOF_var$INDU_MAIN_ACT, by = "INDU_MAIN_ACT") |>
  left_join(BERD_MA_SOF_var$COUNTRY, by = "COUNTRY") |>
  select(Country, INDU_MAIN_ACT, Indu_main_act, obsValue) |>
  spread(Country, obsValue) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F) else .}