Gross domestic expenditure on research and development (R&D) - tipsst10

Data - Eurostat

Info

DOWNLOAD_TIME

Code
tibble(DOWNLOAD_TIME = as.Date(file.info("~/iCloud/website/data/eurostat/tipsst10.RData")$mtime)) %>%
  print_table_conditional()
DOWNLOAD_TIME
2026-03-30

Last

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

geo

All

Code
tipsst10 %>%
  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 .}

eurozone

Code
geo <- geo %>%
  mutate(eurozone = ifelse(Geo %in% c("Austria", "Belgium", "Cyprus", "Estonia", "Finland", "France", 
                                      "Germany", "Greece", "Ireland", "Italy", "Latvia", "Lithuania", 
                                      "Luxembourg", "Malta", "Netherlands", "Portugal", "Slovakia",
                                      "Slovenia", "Spain"), T, F),
         non_eurozone = ifelse(Geo %in% c("Bulgaria", "Croatia", "Czechia", "Denmark", 
                                          "Hungary", "Poland", "Romania", "Sweden"), T, F))
tipsst10 %>%
  left_join(geo, by = "geo") %>%
  filter(eurozone) %>%
  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 .}

unit

Code
tipsst10 %>%
  left_join(unit, by = "unit") %>%
  group_by(unit, Unit) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  print_table_conditional()
unit Unit Nobs
PC_GDP Percentage of gross domestic product (GDP) 865
MIO_NAC Million units of national currency 775

time

Code
tipsst10 %>%
  group_by(time) %>%
  summarise(Nobs = n()) %>%
  arrange(-Nobs) %>%
  arrange(desc(time)) %>%
  print_table_conditional()
time Nobs
2024 57
2023 57
2022 57
2021 57
2020 57
2019 57
2018 57
2017 57
2016 57
2015 57
2014 57
2013 57
2012 57
2011 57
2010 57
2009 57
2008 57
2007 57
2006 57
2005 57
2004 57
2003 57
2002 51
2001 51
2000 49
1999 51
1998 47
1997 47
1996 43
1995 47

France, Germany, Italy, Spain, Netherlands

Code
tipsst10 %>%
  filter(geo %in% c("DE", "ES", "FR", "IT", "NL"),
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 2), "-01-01")),
               labels = date_format("%y")) +
  xlab("") + ylab("GDP growth") +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 2),
                     labels = scales::percent_format(accuracy = 1))

France, Germany, Italy, Spain, Portugal

Code
tipsst10 %>%
  filter(geo %in% c("FR", "DE", "PT", "ES", "IT"),
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_5flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 2), "-01-01")),
               labels = date_format("%y")) +
  xlab("") + ylab("GDP growth") +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 2),
                     labels = scales::percent_format(accuracy = 1))

France, Germany, Portugal

Code
tipsst10 %>%
  filter(geo %in% c("FR", "DE", "PT"),
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 2), "-01-01")),
               labels = date_format("%y")) +
  xlab("") + ylab("GDP growth") +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 2),
                     labels = scales::percent_format(accuracy = 1))

Poland, Hungary, Slovenia

Code
tipsst10 %>%
  filter(geo %in% c("PL", "HU", "SI"),
         unit == "PC_GDP") %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  left_join(colors, by = c("Geo" = "country")) %>%
  mutate(values = values/100) %>%
  ggplot + geom_line(aes(x = date, y = values, color = color)) + theme_minimal() +
  scale_color_identity() + add_3flags +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 2), "-01-01")),
               labels = date_format("%y")) +
  xlab("") + ylab("GDP growth") +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 2),
                     labels = scales::percent_format(accuracy = 1))

Mean, Standard Deviation

All

Viridis

Code
tipsst10 %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  filter(unit == "PC_GDP") %>%
  {if (eurozone) filter(., eurozone) else .} %>%
  group_by(date) %>%
  filter(n() == 19) %>%
  summarise(`Moyenne` = mean(values),
            `Ecart Type` = sd(values)) %>%
  transmute(date, `Moyenne`,
            `Moyenne + SD` = `Moyenne` + `Ecart Type`,
            `Moyenne - SD` = `Moyenne` - `Ecart Type`) %>%
  gather(variable, value, -date) %>%
  mutate(value = value/100) %>%
  ggplot + geom_line(aes(x = date, y = value, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_color_manual(values = c(viridis(3)[1], viridis(3)[2], viridis(3)[2])) +
  scale_linetype_manual(values = c("solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 2), "-01-01")),
               labels = date_format("%y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

Colors

Code
tipsst10 %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  filter(unit == "PC_GDP") %>%
  {if (eurozone) filter(., eurozone) else .} %>%
  group_by(date) %>%
  filter(n() == 19) %>%
  summarise(`Moyenne` = mean(values),
            `Ecart Type` = sd(values)) %>%
  transmute(date, `Moyenne`,
            `Moyenne + SD` = `Moyenne` + `Ecart Type`,
            `Moyenne - SD` = `Moyenne` - `Ecart Type`) %>%
  gather(variable, value, -date) %>%
  mutate(value = value/100) %>%
  ggplot + geom_line(aes(x = date, y = value, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") +
  scale_color_manual(values = c("#003399", "#FFCC00", "#FFCC00")) +
  scale_linetype_manual(values = c("solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2022, 1), "-01-01")),
               labels = date_format("%y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.25, 0.9),
        legend.title = element_blank())

With France

Code
tipsst10 %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  filter(unit == "PC_GDP") %>%
  {if (eurozone) filter(., eurozone) else .} %>%
  group_by(date) %>%
  filter(n() == 19) %>%
  summarise(`Moyenne Europe` = mean(values),
            `Ecart Type` = sd(values),
            `France` = values[geo == "FR"]) %>%
  transmute(date, `Moyenne Europe`,
            `Moyenne Europe + SD` = `Moyenne Europe` + `Ecart Type`,
            `Moyenne Europe - SD` = `Moyenne Europe` - `Ecart Type`,
             `France`) %>%
  gather(variable, value, -date) %>%
  mutate(values = value/100,
         Geo = ifelse(variable == "France", "France", "Europe")) %>%
  ggplot + geom_line(aes(x = date, y = values, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") + add_4flags +
  scale_color_manual(values = c("#ED2939", "#003399", "#FFCC00", "#FFCC00")) +
  scale_linetype_manual(values = c("solid", "solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 1), "-01-01")),
               labels = date_format("%y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, 1),
                     labels = scales::percent_format(accuracy = 1)) +
  theme(legend.position = c(0.75, 0.2),
        legend.title = element_blank())

With Germany

Code
tipsst10 %>%
  year_to_date %>%
  left_join(geo, by = "geo") %>%
  filter(unit == "PC_GDP") %>%
  {if (eurozone) filter(., eurozone) else .} %>%
  group_by(date) %>%
  filter(n() == 19) %>%
  summarise(`Moyenne Europe` = mean(values),
            `Ecart Type` = sd(values),
            `France` = values[geo == "FR"],
            `Allemagne` = values[geo == "DE"]) %>%
  transmute(date, `Moyenne Europe`,
            `Moyenne Europe + SD` = `Moyenne Europe` + `Ecart Type`,
            `Moyenne Europe - SD` = `Moyenne Europe` - `Ecart Type`,
             `France`,
             `Allemagne`) %>%
  gather(variable, value, -date) %>%
  mutate(values = value/100,
         Geo = ifelse(variable == "France", "France", "Europe"),
         Geo = ifelse(variable == "Allemagne", "Germany", Geo)) %>%
  ggplot + geom_line(aes(x = date, y = values, color = variable, linetype = variable)) +
  theme_minimal() + xlab("") + ylab("") + add_5flags +
  scale_color_manual(values = c("#000000", "#ED2939", "#003399", "#FFCC00", "#FFCC00")) +
  scale_linetype_manual(values = c("solid", "solid", "solid", "dashed", "dashed")) +
  scale_x_date(breaks = as.Date(paste0(seq(1960, 2020, 1), "-01-01")),
               labels = date_format("%y")) +
  scale_y_continuous(breaks = 0.01*seq(-100, 200, .5),
                     labels = scales::percent_format(accuracy = .1)) +
  theme(legend.position = c(0.75, 0.2),
        legend.title = element_blank())