df <- eurostat::get_eurostat("une_rt_a")Programación y manejo de datos con R (Slides 04-B)
Eurostat es la oficina estadística de la Unión Europea. Depende de la Comisión Europea y está en Luxemburgo
No hace encuestas: recoge los datos de los institutos de estadística de cada país (en España, el INE) y los armoniza
Tiene datos de los 27 países de la UE, y muchas veces también de la EFTA (Noruega, Suiza, Islandia), de los países candidatos y de las regiones (NUTS)
fuente a la que ir cuando queremos comparar países o regiones europeas
Para datos de España con mucho detalle, el INE. Para comparar España con otros países, Eurostat.
La base de datos por temas/carpetas:
| Código | Dataset | Periodicidad |
|---|---|---|
une_rt_a |
Desempleo por sexo y edad | anual |
une_rt_m |
Desempleo por sexo y edad | mensual |
nama_10_pc |
PIB per cápita y sus componentes | anual |
prc_hicp_manr |
Inflación (IPC armonizado, tasa anual) | mensual |
demo_pjan |
Población a 1 de enero, por edad y sexo | anual |
lfst_r_lfu3rt |
Tasa de paro por regiones (NUTS 2) | anual |
El código no es caprichoso: está hecho de trozos, separados por _, y cada trozo significa algo.
Las primeras letras indican el tema y la última parte suele indicar la periodicidad (_a anual, _q trimestral, _m mensual). Por ejemplo:
une_rt_a: une (unemployment, desempleo) + rt (rate, tasa) + a (annual, anual)nama_10_pc: nama (national accounts main aggregates, contabilidad nacional) + 10 (el sistema de cuentas SEC 2010) + pc (per capita)prc_hicp_manr: prc (prices, precios) + hicp (harmonised index of consumer prices, el IPC armonizado) + manr (monthly annual rate, la tasa anual de cada mes)demo_pjan: demo (demography, demografía) + pjan (population on 1 January, población a 1 de enero)lfst_r_lfu3rt: lfst (labour force survey, la “EPA europea”) + r (regional) + lfu3rt (tasa de paro)une_rt_a:| freq <chr> |
age <chr> |
unit <chr> |
sex <chr> |
geo <chr> |
TIME_PERIOD <date> |
values <dbl> |
|---|---|---|---|---|---|---|
| A | Y15-24 | PC_ACT | F | AT | 2009-01-01 | 10.5 |
| A | Y15-24 | PC_ACT | F | AT | 2010-01-01 | 9.8 |
| A | Y15-24 | PC_ACT | F | AT | 2011-01-01 | 9.5 |
| A | Y15-24 | PC_ACT | F | AT | 2012-01-01 | 9.6 |
| Primeras 4 filas de 39.909 | ||||||
| Dimensión | ¿Qué es? | Algunos valores |
|---|---|---|
freq |
la periodicidad | A (anual) |
age |
el grupo de edad | Y15-74, Y15-24, Y25-74, … |
unit |
la unidad de medida | PC_ACT (% de la población activa)THS_PER (miles de personas) ❗❗ |
sex |
el sexo | T (total), M (hombres), F (mujeres) |
geo |
el país o la región | ES, FR, EU27_2020, … |
TIME_PERIOD |
el periodo | 2024-01-01, 2025-01-01, … |
values |
el dato | 10.5, 9.8, … |
En los datos solo hay códigos:
ES, PC_ACT, Y15-74.
Su significado (las “etiquetas”) está en unos diccionarios aparte, pero con el paquete eurostat podemos obtenerlos fácilmente
Con la dimensión unit hay que tener cuidado: en el mismo dataset, una variable suele venir en varias unidades.
Cuidado porqué puedes mezclar porcentajes con miles de personas ❗❗
geo tiene países, agregados y regiones:| Tipo | Códigos | Ejemplos |
|---|---|---|
| países | 2 letras | ES, FR, DE, ITOjo: Grecia es EL |
| agregados | letras y números | EU27_2020 (la UE de 27 países)EA20 (la zona euro de 20 países) |
| regiones NUTS 1 | país + 1 carácter | ES5 (Este) |
| regiones NUTS 2 | país + 2 caracteres | ES52 (Comunitat Valenciana) |
| regiones NUTS 3 | país + 3 caracteres | ES523 (Valencia/València) |
NUTS es la clasificación europea de regiones. En España: NUTS 2 son las comunidades autónomas y NUTS 3 las provincias
Por ejemplo:
ES (España, NUTS 0) → ES5 (Este, NUTS 1) → ES52 (Comunitat Valenciana, NUTS 2) → ES523 (la provincia de Valencia, NUTS 3)
Ojo: ES523 es la provincia, no la ciudad. Los municipios no tienen código NUTS: están en otra clasificación, las LAU (Local Administrative Units)
Cuidado con los agregados: si sumas o haces un ranking sin quitarlos, la “UE” aparecerá como un país más
Por menús: entras en la web, buscas el dataset, pinchas en Download y guardas el fichero
Con la url del fichero: descargas el fichero desde R, sin pasar por la web
Con el paquete eurostat: buscas y descargas los datos desde R
Veremos primero cómo hacerlo “a mano” (formas 1 y 2) y después con el paquete eurostat
Descargar un fichero de Eurostat y limpiarlo
Queremos la tasa de paro de los países europeos. Navegando por las carpetas (Population and social conditions → Labour market → …) llegamos a la página del dataset, en el Data Browser
Su código está debajo del título (Online data code) y al final de la url: une_rt_a. Apúntalo, lo vamos a necesitar!!
Con el botón Download podemos bajarnos el dataset en varios formatos. ¿Cuál elegimos?
| Formato | ¿Cómo es? | ¿Sirve para R? |
|---|---|---|
| SDMX-CSV | una fila por dato | sí, es el mejor |
| TSV | separado por tabuladores, con una columna por periodo | sí, pero hay que limpiarlo bastante |
Excel (.xlsx) |
la tabla tal como se ve en la web | con mucho trabajo |
| JSON-stat, SDMX-ML | formatos para programas | mejor con el paquete eurostat |
Pero … no hace falta pinchar en Download: la url del fichero siempre tiene la misma forma. Solo cambian el código del dataset y el formato:
https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/une_rt_a?format=SDMX-CSV
Ojo: se descarga el dataset completo, con todos los países, años, sexos, edades y unidades
my_url <- "https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/une_rt_a?format=SDMX-CSV"
1df_paro <- readr::read_csv(my_url)read_csv(), directamente de la url. Ha ido bien: una fila por dato, y el valor (OBS_VALUE) es numérico
| DATAFLOW <chr> |
LAST UPDATE <chr> |
freq <chr> |
age <chr> |
unit <chr> |
sex <chr> |
geo <chr> |
TIME_PERIOD <dbl> |
OBS_VALUE <dbl> |
OBS_FLAG <chr> |
CONF_STATUS <lgl> |
|---|---|---|---|---|---|---|---|---|---|---|
| ESTAT:UNE_RT_A(1.0) | 10/09/26 23:00:00 | A | Y15-24 | PC_ACT | F | AT | 2009 | 10.5 | NA | NA |
| ESTAT:UNE_RT_A(1.0) | 10/09/26 23:00:00 | A | Y15-24 | PC_ACT | F | AT | 2010 | 9.8 | NA | NA |
| Primeras 2 filas de 39.909 | ||||||||||
PC_ACT, Y15-24 y AT? Veamos qué valores toma cada dimensión, con count():El significado de cada código está en la web del dataset. También se puede descargar: cada dimensión tiene su diccionario (codelist), pero es más cómodo con el paquete eurostat, como veremos
OBS_FLAG son los flags: avisos sobre un dato. Los más habituales: b (ruptura en la serie), p (provisional), e (estimado), u (poco fiable)
df_paro <- df_paro %>%
1 janitor::clean_names() %>%
select(geo, unit, sex, age,
anyo = time_period,
tasa_paro = obs_value,
2 flag = obs_flag) %>%
filter(unit == "PC_ACT", sex == "T",
3 age == "Y15-74") %>%
mutate(tipo_geo = if_else(str_length(geo) == 2,
4 "país", "agregado"))EU27_2020, EA20, …)
| geo <chr> |
unit <chr> |
sex <chr> |
age <chr> |
anyo <dbl> |
tasa_paro <dbl> |
flag <chr> |
tipo_geo <chr> |
|---|---|---|---|---|---|---|---|
| ES | PC_ACT | T | Y15-74 | 2024 | 11.4 | d | país |
| ES | PC_ACT | T | Y15-74 | 2025 | 10.5 | d | país |
| EU27_2020 | PC_ACT | T | Y15-74 | 2024 | 6 | NA | agregado |
| EU27_2020 | PC_ACT | T | Y15-74 | 2025 | 6 | NA | agregado |
df_paro %>%
filter(anyo == max(anyo)) %>%
#- los 27 países de la UE y el total
filter(geo %in% c(eurostat::eu_countries$code, "EU27_2020")) %>%
#- España, con su propio color
mutate(tipo_geo = if_else(geo == "ES", "España", tipo_geo)) %>%
ggplot(aes(x = tasa_paro, y = fct_reorder(geo, tasa_paro))) +
geom_col(aes(fill = tipo_geo)) +
labs(title = paste0("Tasa de paro en la UE (", max(df_paro$anyo), ")"),
x = "%", y = NULL, fill = NULL, caption = "Fuente: Eurostat (une_rt_a)")tps00001 de Eurostat tiene la población a 1 de enero de los países europeosgeo?count() de cada dimensión. En geo están también los agregados (EU27_2020, EA20, …)janitor::clean_names(), select() y rename()str_length(geo) == 2)group_by(geo) y summarise() con first() y last()| geo | anyo | poblacion |
|---|---|---|
| ES | 2015 | 46.425.722 |
| ES | 2016 | 46.418.884 |
| ES | 2017 | 46.497.393 |
| ES | 2018 | 46.645.070 |
| ES | 2019 | 46.918.951 |
| ES | 2020 | 47.318.050 |
| ES | 2021 | 47.400.798 |
| ES | 2022 | 47.486.843 |
| ES | 2023 | 48.085.361 |
| ES | 2024 | 48.619.695 |
| ES | 2025 | 49.128.297 |
| ES | 2026 | 49.590.099 |
df_crec %>%
filter(geo %in% c("DE", "UK", "FR", "IT", "ES") |
1 crec %in% range(crec)) %>%
gt::gt() %>%
gt::fmt_number(columns = c(pob_ini, pob_fin),
decimals = 0, sep_mark = ".") %>%
gt::fmt_percent(columns = crec, decimals = 1)range(crec) devuelve el mínimo y el máximo de crec: así nos quedamos también con el país que más crece y con el que menos
| geo | anyo_ini | anyo_fin | pob_ini | pob_fin | crec |
|---|---|---|---|---|---|
| MT | 2015 | 2026 | 438.805 | 588.254 | 34.1% |
| UK | 2015 | 2026 | 64.852.826 | 69.554.275 | 7.2% |
| ES | 2015 | 2026 | 46.425.722 | 49.590.099 | 6.8% |
| FR | 2015 | 2026 | 66.458.153 | 69.112.309 | 4.0% |
| DE | 2015 | 2026 | 81.197.537 | 83.467.117 | 2.8% |
| IT | 2015 | 2026 | 60.295.497 | 58.942.828 | −2.2% |
| MD | 2015 | 2026 | 3.555.159 | 2.365.645 | −33.5% |
Los datos de Eurostat, directamente desde R
eurostat es un paquete de rOpenGov para descargar datos de EurostatVentajas frente a descargar ficheros:
Tiene una cheatsheet y unos tutoriales muy buenos
| Para … | función |
|---|---|
| buscar datasets | search_eurostat() |
| ver el índice de toda la base de datos | get_eurostat_toc() |
| descargar un dataset | get_eurostat() |
| cambiar los códigos por sus etiquetas | label_eurostat() |
| ver el diccionario de una dimensión | get_eurostat_dic() |
| descargar los mapas de países y regiones | get_eurostat_geospatial() |
El recorrido habitual: buscar → descargar → (elegir unidades y categorías) → etiquetar
Si ya conoces el código del dataset, puedes ir directamente a get_eurostat()
1aa <- search_eurostat("unemployment")
2aa %>% select(title, code, data.start, data.end) %>% slice(1:3)lang)
View(aa))
| title <chr> |
code <chr> |
data.start <chr> |
data.end <chr> |
|---|---|---|---|
| Persons in long-term unemployment (12 months or more) by educational attainment level and NUTS 2 region | lfst_r_lfu2ltu | 1999 | 2025 |
| Regional disparities in unemployment rates (NUTS level 2, NUTS level 3) | lfst_r_lmdur | 1999 | 2025 |
| Regional disparities in long-term unemployment rates (NUTS level 2) | lfst_r_lmdltu | 1999 | 2025 |
filter():| title <chr> |
code <chr> |
data.start <chr> |
data.end <chr> |
|---|---|---|---|
| Long-term unemployment by sex - annual data (1996–2020) | une_ltu_a_h | 1996 | 2020 |
| Supplementary indicators to unemployment - annual data (1992–2020) | lfsi_sup_a_h | 1992 | 2020 |
| Long-term unemployment by sex - annual data | une_ltu_a | 2003 | 2025 |
| Supplementary indicators to unemployment - annual data | lfsi_sup_a | 2003 | 2025 |
| Long-term unemployment by sex - annual data | une_ltu_a | 2003 | 2025 |
| Long-term unemployment by sex - annual data | une_ltu_a | 2003 | 2025 |
| freq <chr> |
age <chr> |
unit <chr> |
sex <chr> |
geo <chr> |
TIME_PERIOD <date> |
values <dbl> |
|---|---|---|---|---|---|---|
| A | Y15-24 | PC_ACT | F | AT | 2009-01-01 | 10.5 |
| A | Y15-24 | PC_ACT | F | AT | 2010-01-01 | 9.8 |
| A | Y15-24 | PC_ACT | F | AT | 2011-01-01 | 9.5 |
| A | Y15-24 | PC_ACT | F | AT | 2012-01-01 | 9.6 |
| A | Y15-24 | PC_ACT | F | AT | 2013-01-01 | 10.4 |
| A | Y15-24 | PC_ACT | F | AT | 2014-01-01 | 10.4 |
| Primeras 6 filas de 39.909 | ||||||
Llega ya limpio: una fila por dato, y los valores (values) son numéricos
TIME_PERIOD es una fecha de verdad: el primer día del periodo. Si lo prefieres como número (2024), get_eurostat("une_rt_a", time_format = "num")
Por defecto no trae los flags. Para tenerlos: get_eurostat("une_rt_a", keepFlags = TRUE). Los que más importan son b (break in time series: ese año cambió la forma de medir, y el dato no es comparable con los anteriores) y d (definition differs: la definición no es exactamente la estándar)
Pero siguen siendo códigos …
| freq <chr> |
age <chr> |
unit <chr> |
sex <chr> |
geo <chr> |
TIME_PERIOD <date> |
values <dbl> |
|---|---|---|---|---|---|---|
| Annual | From 15 to 24 years | Percentage of population in the labour force | Females | Austria | 2009-01-01 | 10.5 |
| Annual | From 15 to 24 years | Percentage of population in the labour force | Females | Austria | 2010-01-01 | 9.8 |
| Annual | From 15 to 24 years | Percentage of population in the labour force | Females | Austria | 2011-01-01 | 9.5 |
code se indica de qué dimensiones conservar el códigodf_l <- label_eurostat(df, code = c("geo", "unit", "sex", "age"))
df_l %>%
select(geo_code, geo, unit_code, unit, sex_code, sex, age_code, age, TIME_PERIOD, values) %>%
slice(1:3)| geo_code <chr> |
geo <chr> |
unit_code <chr> |
unit <chr> |
sex_code <chr> |
sex <chr> |
age_code <chr> |
age <chr> |
TIME_PERIOD <date> |
values <dbl> |
|---|---|---|---|---|---|---|---|---|---|
| AT | Austria | PC_ACT | Percentage of population in the labour force | F | Females | Y15-24 | From 15 to 24 years | 2009-01-01 | 10.5 |
| AT | Austria | PC_ACT | Percentage of population in the labour force | F | Females | Y15-24 | From 15 to 24 years | 2010-01-01 | 9.8 |
| AT | Austria | PC_ACT | Percentage of population in the labour force | F | Females | Y15-24 | From 15 to 24 years | 2011-01-01 | 9.5 |
get_eurostat_dic() devuelve el diccionario de una dimensión:| dimensión | filas |
|---|---|
| geo | 4.292 |
| unit | 773 |
| age | 686 |
| sex | 8 |
| freq | 12 |
sex tiene 8 filas, aunque en une_rt_a solo salen 3df_l (con los códigos y las etiquetas), con distinct() ves las parejas código-etiqueta de cada dimensión:eu_countries, ea_countries, efta_countries, …filters: descargar solo una parte … y el paro en España y en Europafilters se descarga solo lo que se necesita: una lista con los códigos de cada dimensióndf_5 <- get_eurostat("une_rt_a",
filters = list(
geo = c("ES", "FR", "IT", "DE",
1 "EU27_2020"),
sex = "T",
age = "Y15-74",
unit = "PC_ACT"))
df_5 %>% filter(geo == "ES", time >= "2024-01-01")| freq <chr> |
age <chr> |
unit <chr> |
sex <chr> |
geo <chr> |
time <date> |
values <dbl> |
|---|---|---|---|---|---|---|
| A | Y15-74 | PC_ACT | T | ES | 2024-01-01 | 11.4 |
| A | Y15-74 | PC_ACT | T | ES | 2025-01-01 | 10.5 |
¡Atención! Con filters la columna del tiempo se llama time (sin filters, TIME_PERIOD): los datos se piden a otra API de Eurostat
Para el tiempo: time = 2024 (un año), sinceTimePeriod = 2015 (desde un año) o lastTimePeriod = 5 (los últimos periodos)
df_5 %>%
label_eurostat(code = "geo") %>%
mutate(geo = if_else(geo_code == "EU27_2020",
"UE-27", geo)) %>%
ggplot(aes(x = time, y = values, color = geo)) +
geom_line(linewidth = 1) +
labs(title = "Tasa de paro (15-74 años)", color = NULL,
x = NULL, y = "% de la población activa",
caption = "Fuente: Eurostat (une_rt_a)")| Trampa | Ejemplo | Solución |
|---|---|---|
| en los datos solo hay códigos | PC_ACT, Y15-74, B1GQ |
mirar su significado (o label_eurostat()) |
| la misma variable en varias unidades | PC_ACT, PC_POP, THS_PER |
filter(unit == ...): así que cuidado!! |
| los totales están mezclados con las categorías | sex == "T", age == "TOTAL" |
filter(): cuidado al sumar |
| países y agregados juntos | ES, EU27_2020, EA20 |
separarlos por la longitud del código |
| los códigos de algunos países no son los habituales | Grecia es EL (no GR) |
eurostat::eu_countries |
| datos con avisos | flags b, p, e, u |
mirar la columna de flags |
| el dataset completo puede ser enorme | millones de filas | descargar solo una parte (con el paquete) |
Después de importar, haz un count() de cada dimensión. Siempre
La caché: get_eurostat() guarda lo que descarga, y la próxima vez lo lee del disco. Si quieres los datos actualizados: get_eurostat(..., update_cache = TRUE)
Los códigos cambian: la UE era EU28 y ahora es EU27_2020; la zona euro pasó de EA19 a EA20 al entrar Croacia. Y hay datasets que se dejan de actualizar y se sustituyen por otros
Las regiones también: la clasificación NUTS se revisa cada pocos años. Si al unir datos y mapas se pierden regiones, mira qué versión usa cada uno
Datos anuales, trimestrales y mensuales suelen están en datasets distintos (une_rt_a, une_rt_q, une_rt_m)
Todo está en inglés: los títulos y las etiquetas (también en francés y alemán, con lang)
Guarda en disco los datos que uses en un trabajo (rio::export()): Eurostat revisa los datos, y mañana pueden ser otros
nama_10_pc tiene el PIB per cápita de los países europeosunit) hay? ¿Y cuántas magnitudes (na_item)?na_item: B1GQ) en paridad de poder de compra (unit: CP_PPS_EU27_2020_HAB) del año 2024count(unit) y count(na_item). Para saber qué significan: get_eurostat_dic("na_item")filter(); o, mejor, descargar solo eso con filtersfilter(geo %in% eu_countries$code) y label_eurostat(code = "geo")arrange(desc(values)) y mutate(ranking = row_number())geom_col(aes(fill = geo_code == "ES"))| na_item_code <chr> |
na_item <chr> |
|---|---|
| B1GQ | Gross domestic product at market prices |
| P3 | Final consumption expenditure |
| P31_S13 | Individual consumption expenditure of general government |
| P31_S14 | Final consumption expenditure of household |
| P31_S14_S15 | Household and NPISH final consumption expenditure |
| P31_S15 | Final consumption expenditure of NPISH |
| P32_S13 | Collective consumption expenditure of general government |
| P3_S13 | Final consumption expenditure of general government |
| P41 | Actual individual consumption |
| unit_code <chr> |
unit <chr> |
|---|---|
| CLV10_EUR_HAB | Chain linked volumes (2010), euro per capita |
| CLV15_EUR_HAB | Chain linked volumes (2015), euro per capita |
| CLV20_EUR_HAB | Chain linked volumes (2020), euro per capita |
| Primeras 3 filas de 12 | |
df_pib <- get_eurostat("nama_10_pc",
1 filters = list(na_item = "B1GQ", unit = "CP_PPS_EU27_2020_HAB",
time = 2024)) %>%
2 filter(geo %in% eu_countries$code) %>%
3 label_eurostat(code = "geo") %>%
select(geo_code, pais = geo, pib_pc = values) %>%
4 arrange(desc(pib_pc)) %>%
mutate(ranking = row_number())B1GQ), por habitante y en paridad de poder de compra (CP_PPS_EU27_2020_HAB), del año 2024
geo_code)
lfst_r_lfu3rt (tasa de paro por regiones NUTS 2):sex: T; age: Y15-74; isced11: TOTAL) desde 2015filters = list(..., sinceTimePeriod = 2015)ES: str_detect(geo, "^ES") y str_length(geo) == 4filter(time == max(time)), slice_max() y slice_min()ES52, ES y EU27_2020df_reg <- get_eurostat("lfst_r_lfu3rt",
1 filters = list(sex = "T", age = "Y15-74", isced11 = "TOTAL",
sinceTimePeriod = 2015))
df_ccaa <- df_reg %>%
2 filter(str_detect(geo, "^ES"), str_length(geo) == 4) %>%
3 label_eurostat(code = "geo", fix_duplicated = TRUE) %>%
select(geo_code, ccaa = geo, time, tasa_paro = values)ES y tienen 4 caracteres (NUTS 2)
fix_duplicated = TRUE evita problemas si dos regiones se llaman igual
| geo_code <chr> |
ccaa <chr> |
time <date> |
tasa_paro <dbl> |
|---|---|---|---|
| ES64 | Ciudad de Melilla | 2025-01-01 | 24.9 |
| ES63 | Ciudad de Ceuta | 2025-01-01 | 24.3 |
| ES61 | Andalucía | 2025-01-01 | 15.2 |
df_reg %>%
filter(geo %in% c("ES52", "ES", "EU27_2020")) %>%
label_eurostat(code = "geo") %>%
mutate(geo = if_else(geo_code == "EU27_2020", "UE-27", geo)) %>%
ggplot(aes(x = time, y = values, color = geo)) +
geom_line(linewidth = 1) +
labs(title = "Tasa de paro (15-74 años)", x = NULL, y = "%", color = NULL)eurostat consigue las dosdf_reg <- get_eurostat("lfst_r_lfu3rt",
filters = list(sex = "T", age = "Y15-74",
isced11 = "TOTAL",
1 time = 2024))
geo_nuts2 <- get_eurostat_geospatial(
resolution = "20", nuts_level = "2",
2 year = 2024)
df_mapa <- geo_nuts2 %>%
3 left_join(df_reg, by = "geo")sf y giscoR
geo
df_mapa es un data.frame “con geometría” (un objeto sf): tiene 299 filas, una por región, y se dibuja con geom_sf(). Lo vemos con más calma en las slides de mapasfilters y hacemos un mapa por año con facet_wrap()La web del paquete eurostat, con sus tutoriales, y su cheatsheet
La base de datos de Eurostat y su Data Browser
Statistics Explained: artículos de Eurostat que explican cada estadística, con sus definiciones
La clasificación de regiones NUTS
Para datos de España con más detalle: las slides sobre los datos del INE
Para mapas: las slides de mapas con R
| Para … | usamos … |
|---|---|
| encontrar un dataset | la base de datos de Eurostat, o search_eurostat() |
| descargar su fichero a mano | https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/data/código?format=SDMX-CSV |
| importarlo | read_csv(url) |
| saber qué contiene | count() de cada dimensión |
| descargarlo con el paquete | get_eurostat("código") |
| … solo una parte | get_eurostat("código", filters = list(...)) |
| … con los flags | keepFlags = TRUE |
| cambiar códigos por etiquetas | label_eurostat(df, code = "geo") |
| ver un diccionario | get_eurostat_dic("unit") |
| quedarse con los países de la UE | filter(geo %in% eu_countries$code) |
| hacer un mapa | get_eurostat_geospatial() + left_join() + geom_sf() |