This article shows the evolution of selected economic indicators of Spain, based on the information provided by Banco de España.

Last update: r format(Sys.Date(),"%d-%B-%Y").

knitr::opts_chunk$set(
  collapse = TRUE,
  tidy = "styler",
  comment = "#>",
  warning = FALSE,
  message = FALSE,
  dev = "ragg_png",
  dpi = 300,
  out.width = "100%"
)

library(tidyBdE)
library(ggplot2)
library(dplyr)
library(tidyr)


col <- bde_tidy_palettes(1, "bde_rose_pal")
date <- Sys.Date()
ny <- as.numeric(format(date, format = "%Y")) - 6
nd <- as.Date(paste0(ny, "-12-31"))

br <- seq(nd, Sys.Date(), "6 months")

GDP of Spain

Aggregated (last 4 quarters)

dataset <- bde_ind_gdp_quarterly(series_label = "data") %>%
  drop_na()

dataset$LastY <- dataset$data + lag(dataset$data, 1) +
  lag(dataset$data, 2) + lag(dataset$data, 3)

dataset <- dataset %>%
  filter(Date >= nd) %>%
  mutate(data = LastY) %>%
  select(-LastY)

l <- dataset[nrow(dataset), ]

ggplot(dataset, aes(x = Date, y = data)) +
  geom_bar(fill = col, stat = "identity") +
  scale_y_continuous(labels = scales::label_number()) +
  labs(
    title = "GDP of Spain",
    subtitle = "million €",
    caption = "Source: BdE"
  ) +
  scale_x_date(
    date_labels = "%b-%Y",
    breaks = br
  ) +
  theme_tidybde()

Year-on-year variation

dataset <- bde_ind_gdp_var(series_label = "data") %>%
  filter(Date >= nd) %>%
  drop_na()


l <- dataset[nrow(dataset), ]

ggplot(dataset, aes(x = Date, y = data)) +
  geom_line(color = col) +
  geom_text(
    data = l,
    size = 3,
    aes(label = paste(x = data, "%\n", format(Date, "%b-%Y")))
  ) +
  labs(
    title = "GDP of Spain (year-on-year variation)",
    subtitle = "%",
    caption = "Source: BdE"
  ) +
  scale_x_date(
    date_labels = "%b-%Y",
    breaks = br
  ) +
  theme_tidybde()

GDP per capita

pop <- bde_ind_population(series_label = "pop")
pib <- bde_ind_gdp_quarterly(series_label = "data")

pib$LastY <- pib$data + lag(pib$data, 1) + lag(pib$data, 2) + lag(pib$data, 3)

pib <- inner_join(pib, pop, by = "Date")

pib <- pib %>% mutate(data = 1000 * LastY / pop)

dataset <- pib %>%
  select(Date, data) %>%
  filter(Date >= nd) %>%
  drop_na()


l <- dataset[nrow(dataset), ]

ggplot(dataset, aes(x = Date, y = data)) +
  geom_line(color = col) +
  geom_text(
    data = l,
    size = 3,
    aes(label = paste(
      x = prettyNum(data, big.mark = " "),
      "€\n", format(Date, "%b-%Y")
    ))
  ) +
  labs(
    title = "GDP per capita of Spain",
    subtitle = "€",
    caption = "Source: BdE"
  ) +
  scale_y_continuous(labels = scales::label_number()) +
  scale_x_date(
    date_labels = "%b-%Y",
    breaks = br
  ) +
  theme_tidybde()

Unemployment Rate

dataset <- bde_ind_unemployment_rate(series_label = "data") %>%
  filter(Date >= nd) %>%
  drop_na()


l <- dataset[nrow(dataset), ]

ggplot(dataset, aes(x = Date, y = data)) +
  geom_line(color = col) +
  geom_text(
    data = l,
    size = 3,
    aes(label = paste(x = data, "%\n", format(Date, "%b-%Y")))
  ) +
  labs(
    title = "Unemployment Rate",
    subtitle = "%",
    caption = "Source: BdE"
  ) +
  scale_x_date(
    date_labels = "%b-%Y",
    breaks = br
  ) +
  theme_tidybde()

Consumer Price Index

dataset <- bde_ind_cpi_var(series_label = "data") %>%
  filter(Date >= nd) %>%
  drop_na()


l <- dataset[nrow(dataset), ]

ggplot(dataset, aes(x = Date, y = data)) +
  geom_line(color = col) +
  geom_text(
    data = l,
    size = 3,
    aes(label = paste(x = data, "%\n", format(Date, "%b-%Y")))
  ) +
  labs(
    title = "Consumer Price Index",
    subtitle = "%",
    caption = "Source: BdE"
  ) +
  scale_x_date(
    date_labels = "%b-%Y",
    breaks = br
  ) +
  theme_tidybde()

Monthly Euribor

dataset <- bde_ind_euribor_12m_monthly(series_label = "data") %>%
  filter(Date >= nd) %>%
  drop_na()


l <- dataset[nrow(dataset), ]

ggplot(dataset, aes(x = Date, y = data)) +
  geom_line(color = col) +
  geom_text(
    data = l,
    size = 3,
    aes(label = paste(x = data, "%\n", format(Date, "%b-%Y")))
  ) +
  labs(
    title = "Euribor 12 months (monthly)",
    subtitle = "%",
    caption = "Source: BdE"
  ) +
  scale_x_date(
    date_labels = "%b-%Y",
    breaks = br
  ) +
  theme_tidybde()

Population

dataset <- bde_ind_population(series_label = "data") %>%
  filter(Date >= nd) %>%
  drop_na()


l <- dataset[nrow(dataset), ]

ggplot(dataset, aes(x = Date, y = data)) +
  geom_line(color = col) +
  geom_text(
    data = l,
    size = 3,
    aes(label = paste(
      x = prettyNum(data, big.mark = " "),
      "\n", format(Date, "%b-%Y")
    ))
  ) +
  labs(
    title = "Population of Spain",
    subtitle = "thousands",
    caption = "Source: BdE"
  ) +
  scale_x_date(
    date_labels = "%b-%Y",
    breaks = br
  ) +
  scale_y_continuous(labels = scales::label_number()) +
  theme_tidybde()


rOpenSpain/tidyBdE documentation built on June 1, 2025, 2:03 p.m.