Main Science and Technology Indicators

Data - OECD

Info

DOWNLOAD_TIME

source dataset Title Download Compile
oecd MSTI_PUB Main Science and Technology Indicators 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-13]
eurostat htec_trd_group4 High-tech trade by high-tech group of products in million euro (from 2007, SITC Rev. 4) NA [2026-08-13]
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 BERD_MA_SOF Business enterprise R&D expenditure by main activity (focussed) and source of funds NA [2026-08-13]
oecd GBARD_NABS2007 Government budget allocations for R and D NA [2026-08-13]
oecd MEI_REAL Production and Sales (MEI) NA [2026-08-13]
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]

COMPILE_TIME

COMPILE_TIME
2026-08-13

Last

TIME_PERIOD Nobs
2025 9

MSTI_VAR

Code
MSTI_PUB |>
  left_join(MSTI_PUB_var$MSTI_VAR, by = "MSTI_VAR") |>
  group_by(MSTI_VAR, Msti_var) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  print_table_conditional()

REF_AREA

Code
MSTI_PUB |>
  left_join(MSTI_PUB_var$COU, by = c("REF_AREA" = "COU")) |>
  group_by(REF_AREA, Cou) |>
  summarise(Nobs = n()) |>
  arrange(-Nobs) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Cou)),
         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 .}

obsTime

Code
MSTI_PUB |>
  group_by(TIME_PERIOD) |>
  summarise(Nobs = n()) |>
  arrange(desc(TIME_PERIOD)) |>
  print_table_conditional()

High Technology Exports

Table

Code
MSTI_PUB |>
  filter(MSTI_VAR %in% c("TD_EAERO", "TD_ECOMP", "TD_EDRUG"),
         UNIT_MEASURE == "USD",
         TIME_PERIOD %in% paste0(c(1981, 1990, 2000, 2005, 2010, 2019, 2020))) |>
  left_join(MSTI_PUB_var$COU, by = c("REF_AREA" = "COU")) |>
  select(MSTI_VAR, REF_AREA, Cou, TIME_PERIOD, obsValue) |>
  spread(MSTI_VAR, obsValue) |>
  transmute(REF_AREA, Cou, TIME_PERIOD, obsValue = (TD_EAERO + TD_ECOMP + TD_EDRUG)/1000) |>
  mutate(obsValue = round(obsValue, 1)) |>
  spread(TIME_PERIOD, obsValue) |>
  mutate(Flag = gsub(" ", "-", str_to_lower(Cou)),
         Flag = paste0('<img src="../../icon/flag/vsmall/', Flag, '.png" alt="Flag">')) |>
  select(Flag, everything()) |>
  arrange(-`2019`) %>%
  {if (is_html_output()) datatable(., filter = 'top', rownames = F, escape = F) else .}

China, United States

Linear

Code
MSTI_PUB |>
  filter(MSTI_VAR %in% c("TD_EAERO", "TD_ECOMP", "TD_EDRUG"),
         UNIT_MEASURE == "USD",
         REF_AREA %in% c("CHN", "USA")) |>
  left_join(MSTI_PUB_var$COU, by = c("REF_AREA" = "COU")) |>
  mutate(Cou = ifelse(REF_AREA == "CHN", "China", Cou)) |>
  year_to_date() |>
  select(MSTI_VAR, Location = Cou, date, obsValue) |>
  spread(MSTI_VAR, obsValue) |>
  mutate(obsValue = (TD_EAERO + TD_ECOMP + TD_EDRUG)/1000) |>
  left_join(colors, by = c("Location" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + add_2flags +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 1200, 100),
                     labels = dollar_format(su = " Bn")) +
  ylab("High Technology Exports = Aerospace + \nComputer, electronic and optical industry + Pharmaceutical") + xlab("")

Log

Code
MSTI_PUB |>
  filter(MSTI_VAR %in% c("TD_EAERO", "TD_ECOMP", "TD_EDRUG"),
         UNIT_MEASURE == "USD",
         REF_AREA %in% c("CHN", "USA")) |>
  left_join(MSTI_PUB_var$COU, by = c("REF_AREA" = "COU")) |>
  mutate(Cou = ifelse(REF_AREA == "CHN", "China", Cou)) |>
  year_to_date() |>
  select(MSTI_VAR, Location = Cou, date, obsValue) |>
  spread(MSTI_VAR, obsValue) |>
  mutate(obsValue = (TD_EAERO + TD_ECOMP + TD_EDRUG)/1000) |>
  left_join(colors, by = c("Location" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + add_2flags +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1, 2, 3, 5, 8, 10, 20, 30, 50, 80, 100, 200, 300, 500, 800),
                     labels = dollar_format(su = " Bn", a = 1)) +
  ylab("High Technology Exports = Aerospace + \nComputer, electronic and optical industry + Pharmaceutical") + xlab("")

China, United States, Germany, France

Linear

Code
MSTI_PUB |>
  filter(MSTI_VAR %in% c("TD_EAERO", "TD_ECOMP", "TD_EDRUG"),
         UNIT_MEASURE == "USD",
         REF_AREA %in% c("CHN", "USA", "DEU", "FRA")) |>
  left_join(MSTI_PUB_var$COU, by = c("REF_AREA" = "COU")) |>
  mutate(Cou = ifelse(REF_AREA == "CHN", "China", Cou)) |>
  year_to_date() |>
  select(MSTI_VAR, Location = Cou, date, obsValue) |>
  spread(MSTI_VAR, obsValue) |>
  mutate(obsValue = (TD_EAERO + TD_ECOMP + TD_EDRUG)/1000) |>
  left_join(colors, by = c("Location" = "country")) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + add_4flags +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_continuous(breaks = seq(0, 1200, 100),
                     labels = dollar_format(su = " Bn")) +
  ylab("High Technology Exports = Aerospace + \nComputer, electronic and optical industry + Pharmaceutical") + xlab("")

Log

All

Code
MSTI_PUB |>
  filter(MSTI_VAR %in% c("TD_EAERO", "TD_ECOMP", "TD_EDRUG"),
         UNIT_MEASURE == "USD",
         REF_AREA %in% c("CHN", "USA", "DEU", "FRA", "EU27_2020")) |>
  left_join(MSTI_PUB_var$COU, by = c("REF_AREA" = "COU")) |>
  mutate(Cou = ifelse(REF_AREA == "CHN", "China", Cou)) |>
  year_to_date() |>
  select(MSTI_VAR, REF_AREA, Location = Cou, date, obsValue) |>
  spread(MSTI_VAR, obsValue) |>
  mutate(obsValue = (TD_EAERO + TD_ECOMP + TD_EDRUG)/1000) |>
  mutate(Location = ifelse(REF_AREA == "EU27_2020", "Europe", Location)) |>
  left_join(colors, by = c("Location" = "country")) |>
  mutate(color = ifelse(REF_AREA == "USA", color2, color)) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + add_4flags +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1, 2, 3, 5, 8, 10, 20, 30, 50, 80, 100, 200, 300, 500, 800),
                     labels = dollar_format(su = " Bn", a = 1)) +
  ylab("High Technology Exports = Aerospace + \nComputer, electronic and optical industry + Pharmaceutical") + xlab("")

1995-

Code
MSTI_PUB |>
  filter(MSTI_VAR %in% c("TD_EAERO", "TD_ECOMP", "TD_EDRUG"),
         UNIT_MEASURE == "USD",
         REF_AREA %in% c("CHN", "USA", "DEU", "FRA")) |>
  left_join(MSTI_PUB_var$COU, by = c("REF_AREA" = "COU")) |>
  mutate(Cou = ifelse(REF_AREA == "CHN", "China", Cou)) |>
  year_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  select(MSTI_VAR, REF_AREA, Location = Cou, date, obsValue) |>
  spread(MSTI_VAR, obsValue) |>
  mutate(obsValue = (TD_EAERO + TD_ECOMP + TD_EDRUG)/1000) |>
  left_join(colors, by = c("Location" = "country")) |>
  mutate(color = ifelse(REF_AREA %in% c("CHN", "USA"), color2, color)) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + add_4flags +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1, 2, 3, 5, 8, 10, 20, 30, 50, 80, 100, 200, 300, 500, 800),
                     labels = dollar_format(su = " Bn", a = 1)) +
  ylab("High Tech. Exports = Aerospace + Computer, \nelectronic and optical industry + Pharmaceutical") + xlab("")

1995-

Code
MSTI_PUB |>
  filter(MSTI_VAR %in% c("TD_EAERO", "TD_ECOMP", "TD_EDRUG"),
         UNIT_MEASURE == "USD",
         REF_AREA %in% c("CHN", "USA", "DEU", "FRA")) |>
  left_join(MSTI_PUB_var$COU, by = c("REF_AREA" = "COU")) |>
  mutate(Cou = ifelse(REF_AREA == "CHN", "China", Cou)) |>
  year_to_date() |>
  filter(date >= as.Date("1995-01-01")) |>
  select(MSTI_VAR, REF_AREA, Location = Cou, date, obsValue) |>
  spread(MSTI_VAR, obsValue) |>
  mutate(obsValue = (TD_EAERO + TD_ECOMP + TD_EDRUG)/1000) |>
  left_join(colors, by = c("Location" = "country")) |>
  mutate(color = ifelse(REF_AREA %in% c("USA"), color2, color)) |>
  ggplot() + geom_line(aes(x = date, y = obsValue, color = color)) +
  scale_color_identity() + theme_minimal() + add_4flags +
  scale_x_date(breaks = seq(1920, 2100, 5) |> paste0("-01-01") |> as.Date(),
               labels = date_format("%Y")) +
  scale_y_log10(breaks = c(1, 2, 3, 5, 8, 10, 20, 30, 50, 80, 100, 200, 300, 500, 800),
                     labels = dollar_format(su = " Mds", a = 1)) +
  ylab("Exportations de Haute Technologie = Aéronautique,  \nInformatique, Electronique, Optique, Pharmacie") + xlab("")