--- title: "Get started with tidyBdE" description: Introduction to tidyBdE. tbl-cap-location: bottom vignette: > %\VignetteIndexEntry{Get started with tidyBdE} %\VignetteEngine{quarto::html} %\VignetteEncoding{UTF-8} --- **tidyBdE** is an **R** package that retrieves data from [Banco de España](https://www.bde.es/webbe/en/estadisticas/recursos/descargas-completas.html). Data are returned as a [tibble](https://tibble.tidyverse.org/), and the package automatically detects the format of each time series (dates, characters and numbers). ## Search series Banco de España (**BdE**) provides several time series, either produced by the institution itself or compiled from other sources, such as [Eurostat](https://ec.europa.eu/eurostat) or [INE](https://www.ine.es/). The basic entry point for searching time series is the catalog. You can search for series by name: ``` r library(tidyBdE) library(ggplot2) library(dplyr) library(tidyr) # Search for GBP in the "TC" (exchange rate) catalog. xr_gbp <- bde_catalog_search("GBP", catalog = "TC") xr_gbp |> select(Numero_secuencial, Descripcion_de_la_serie) |> # Display the table in the document. knitr::kable() ``` ::: {#tbl-search} | Numero_secuencial|Descripcion_de_la_serie | |-----------------:|:------------------------------------------------------------------| | 573214|Tipo de cambio. Libras esterlinas por euro (GBP/EUR).Datos diarios | Search results ::: **Note:** BdE metadata is currently provided in Spanish only, so search terms must be provided in Spanish to retrieve results. The institution is working on an English version. After finding a series, load the GBP/EUR exchange rate using the sequential number reference (`Numero_secuencial`): ``` r seq_number <- xr_gbp |> # Select the first record. slice(1) |> # Get the series ID. pull(Numero_secuencial) |> # Convert to numeric. as.double() seq_number #> [1] 573214 time_series <- bde_series_load(seq_number, series_label = "EUR_GBP_XR") |> filter(Date >= "2010-01-01" & Date <= "2020-12-31") |> drop_na() time_series #> # A tibble: 2,816 × 2 #> Date EUR_GBP_XR #> #> 1 2010-01-04 0.891 #> 2 2010-01-05 0.900 #> 3 2010-01-06 0.899 #> 4 2010-01-07 0.900 #> 5 2010-01-08 0.893 #> 6 2010-01-11 0.899 #> 7 2010-01-12 0.897 #> 8 2010-01-13 0.895 #> 9 2010-01-14 0.890 #> 10 2010-01-15 0.881 #> # ℹ 2,806 more rows ``` ## Plot series The package also provides a custom **ggplot2** theme based on BdE publications: ``` r ggplot(time_series, aes(x = Date, y = EUR_GBP_XR)) + geom_line(colour = bde_tidy_palettes(n = 1)) + geom_smooth(method = "gam", colour = bde_tidy_palettes(n = 2)[2]) + labs( title = "EUR/GBP Exchange Rate (2010-2020)", subtitle = "%", caption = "Source: BdE" ) + geom_vline( xintercept = as.Date("2016-06-23"), linetype = "dotted" ) + geom_label(aes( x = as.Date("2016-06-23"), y = 0.95, label = "Brexit" )) + coord_cartesian(ylim = c(0.7, 1)) + theme_tidybde() ```
Figure 1: EUR/GBP Exchange Rate (2010-2020)

Figure 1: EUR/GBP Exchange Rate (2010-2020)

The package also provides convenience functions for selected macroeconomic series, so you do not need to search manually: ``` r # Data in long format. plotseries <- bde_ind_gdp_var("GDP YoY", out_format = "long") |> bind_rows( bde_ind_unemployment_rate("Unemployment Rate", out_format = "long") ) |> drop_na() |> filter(Date >= "2010-01-01" & Date <= "2019-12-31") ggplot(plotseries, aes(x = Date, y = serie_value)) + geom_line(aes(color = serie_name), linewidth = 1) + labs( title = "Spanish Economic Indicators (2010-2019)", subtitle = "%", caption = "Source: BdE" ) + theme_tidybde() + scale_color_bde_d(palette = "bde_vivid_pal") # Use a custom package palette. ```
Figure 2: Spanish Economic Indicators (2010-2019)

Figure 2: Spanish Economic Indicators (2010-2019)

## A note on caching You can use **tidyBdE** to create a local cache by setting the following option: ``` r options(bde_cache_dir = "./path/to/location") ``` When this option is set, **tidyBdE** looks for cached files in the `bde_cache_dir` directory and loads them, speeding up data retrieval. You can update the data after monthly or quarterly releases with the following commands: ``` r bde_catalog_update() # Or use `update_cache = TRUE` in most functions. bde_series_load("SOME ID", update_cache = TRUE) ```