Mòdul pràctic d’ITA
(Grup M)
Es poden aconseguir dades de molts llocs
Com podem descarregar unes dades?
Depèn d’on siguin, però el més normal és que les dades es descarreguin punxant en un enllaç
Per exemple, a la següent ruta hi ha un fitxer de dades en format .xlsx
:
https://www.ine.es/daco/daco42/codmun/codmun20/20codmun.xlsx
I com es descarreguen aquestes mateixes dades amb R?
Podríem fer-ho per menús, però ho farem amb codi.
Al principi és una mica més complicat, però té avantatges, ia més a un Economista li convé saber fer servir R
Vegem-ho amb un exemple
Tasca: descarregar un fitxer de dades amb R
.csv
:Usar la funció download.file()
per a descarregar el fitxer. Hauràs de donar-li el valor de 2 arguments:
l’url on és el fitxer de dades
la ruta del teu ordinador on voleu desar les dades.
(Recorda que estem treballant amb projectes, així que pots fer servir rutes relatives)
1my_url <- "https://raw.githubusercontent.com/perezp44/archivos_download/refs/heads/master/plazas_turisticas.csv"
2fs::dir_create("pruebas")
3download.file(my_url, "./pruebas/plazas_turisticas.csv")
4download.file(url = my_url,
destfile = "./pruebas/plazas_turisticas.csv")
my_url
pruebas
on guardarem les dades
download.file()
per a descarregar les dades que hi ha a my_url
. Els guardem a la carpeta ‘pruebas’ del nostre projecte. Concretament al fitxer plazas_turisticas.csv
my_url <- "https://raw.githubusercontent.com/perezp44/archivos_download/refs/heads/master/plazas_turisticas.csv"
1my_ruta <- "./pruebas/plazas_turisticas.csv"
2curl::curl_download(url = my_url,
destfile = my_ruta)
my_ruta
el lloc on guardarem les dades
curl::curl_download()
per descarregar el fitxer. És una funció més moderna que download.file()
.
podem fer servir/carregar dades dels paquets
per això … intenta entendre el següent chunk de codi
#- quan iniciem R es carreguen automàticament un grup de paquets (R-base)
print(.packages()) #- [🌶]imprimim els noms dels "currently attached packages"
#- en un d'aquests paquets hi ha un conjunt de dades anomenat "iris"
iris #- cridem a "iris"
find("iris") #- [🌶] on és iris?
str(iris) #- què és iris?
my_iris <- iris #- "fem una còpia" d'iris al Global
find("my_iris") #- on és my_iris?
iris <- c(2, 4) #- creem un vector anomenat iris
find("iris") #- on és ara iris?
Tasca: utilitzar unes dades d’un paquet
penguins
que està al paquet palmerpenguins
install.packages("palmerpenguins")
library(palmerpenguins)
penguins
1mys_pinguinos <- palmerpenguins::penguins
Les dades més habituals a Economia són les dades tabulars
.csv
, .xlsx
, .sav
, .dta
, etc …Quan carreguem/importem aquestes dades tabulars a R …
RStudio permet carregar dades usant menús.
Usant menús (File > Import Dataset
) es poden carregar dades CSV, EXCEL, SPSS, SAS y STATA.
Es pot fer amb menús, però nosaltres usarem codi
(La raó és que volem que els nostres anàlisis siguin reproduïbles)
Per importar (i exportar) dades utilitzarem codi
rio::import()
rio::export()
important dades amb rio::import()
rio::import()
té diversos arguments, però només farem servir el primer.file
i la seva descripció diu que el valor de file
ha de ser: “A character string naming a file, URL, or …”file
ha de ser la ruta del nostre ordinador on hi ha les dades que volem importarTasca: importar a R dades que tenim guardades al nostre ordinador
./pruebas/plazas_turisticas.csv
?rio::import()
file
) has d’especificar la ruta on hi ha les dades./pruebas/plazas_turisticas.csv
my_ruta <- "./pruebas/plazas_turisticas.csv"
1df <- rio::import(file = my_ruta)
file
i el valor de l’argument my_ruta
a la funció rio::import()
Un cop tenim les dades a R …
… imagina que algú ens demana aquestes dades netes
Què fem?
Exportant dades a R amb el paquet rio
Per a exportar dades a R farem servir la funció rio::export()
La funció rio::export()
té diversos arguments, però només farem servir els dos primers.
x
(el seu valor ha de ser un objecte/dades de R que volem exportar)file
(el seu valor ha de ser la ruta on volem desar les dades)Tasca: exportar unes dades de R a un fitxer
iris
a un fitxer anomenat iris.csv
a la carpeta pruebas
del vostre projecteiris.xlsx
a la mateixa carpetario::export()
x
i file
(*) el valor de x
ha de ser l’objecte que vols exportar (per exemple iris
)
(*) el valor de file
ha de ser la ruta on vols desar les dades
df <- iris
1rio::export(x = df,
file = "./pruebas/iris.csv")
x
i file
de la funció rio::export()
Pràctica: importar/exportar dades
.xlsx
i .rds
Abans de començar netegem la carpeta pruebas
del nostre projecte
Hi ha moltes organitzacions que ofereixen dades a través d’API’s i …
… moltes vegades, hi ha un paquet de R per accedir fàcilment a ells!!!
Eurostat
Eurostat és l’oficina d’estadística de la Unió Europea
El paquet eurostat
permet accedir a les API d’Eurostat per obtenir dades
eurostat
?Eurostat: important dades a R
library(eurostat)
#- podemos buscar un "tema" con la f. search_eurostat()
aa <- search_eurostat("employment", type = "all")
#- elegimos una tabla de Eurostat
#- "hlth_silc_17": "Healthy life expectancy based on self-perceived health"
my_table <- "hlth_silc_17"
#- da información sobre la Base de datos q hemos elegido
label_eurostat_tables(my_table)
#- descargamos los datos con get_eurostat()
df <- get_eurostat(my_table, time_format = "raw", keepFlags = TRUE )
#- pone labels/etiquetas: mas legible, menos fácil de programar
df_l <- label_eurostat(df)
Practica: importar dades de Eurostat
Podem cercar un tema a Eurostat; per exemple aquí hi ha dades de “Employment and unemployment (LFS)”, aquí dades sobre “Population and social conditions” i aquí sobre “Crime and criminal justitzi”
Per mi és més còmode buscar dades amb el paquet eurostat
library(eurostat)
#- podemos buscar un "tema" con la f. search_eurostat()
my_tema <- "employment"
aa <- eurostat::search_eurostat(pattern = my_tema, type = "all")
#- elegimos una tabla; por ejemplo "hlth_silc_17"
my_table <- "hlth_silc_17"
#- da información sobre la Base de datos que estas buscando
eurostat::label_eurostat_tables(my_table)
#- importamos los datos de "my_table" con get_eurostat()
df <- eurostat::get_eurostat(my_table, time_format = "raw", keepFlags = TRUE )
#- pedimos los descriptores/labels de las series
df_l <- eurostat::label_eurostat(df)
El paquet quantmod
library(quantmod) #- install.packages("quantmod")
#- For stocks and shares, the yahoo source is used.
facebook <- getSymbols(Symbols = 'F', src = 'yahoo', auto.assign = FALSE)
barChart(facebook)
#- For currencies and metals, the oanda source is used.
tc_euro_dolar <- getSymbols(Symbols = 'EUR/USD', src = 'oanda', auto.assign = FALSE)
#- For economics series, the FRED source is used.
Japan_GDP <- getSymbols(Symbols = 'JPNNGDP', src = 'FRED', auto.assign = FALSE)
Formats de dades pròpies de R
Desar dades en formats com .csv
o .xlsx
és el més habitual si vols obrir aquestes dades en altres programes, però …
… però en gravar en aquests formats guardes les dades, PERÒ no guardes les metadades!!!
R té 2 formats de dades pròpies: .rda
y .rds
Format .rds
.rds
Format .RData (o .rda)
.RData
té l’avantatge que podeu desar diversos objectes alhora.rda
Bonus 1 (🌶🌶): exportar les dades d’un df a un fitxer .xlsx
ja existent
#- bonus: le añadimos un libro mas al archivo "./pruebas/iris.xlsx"
rio::export(iris, "./pruebas/iris.xlsx") #- por si acaso lo hubiésemos borrado
rio::export(iris, "./pruebas/iris.xlsx", which = "iris_2")
#- lo mismo pero poniendo los nombres de los argumentos
rio::export(x = iris,
file ="./pruebas/iris.xlsx",
which = "iris_3")
Bonus 2 (🌶🌶🌶🌶): exportar 2 df’s en un únic arxiu .xlsx
Bonus 3 (🌶🌶): importar un full/llibre específic d’un fitxer .xlsx
Webscrapping [🌶🌶🌶 🌶🌶]
rvest
library(rvest)
library(tidyverse)
my_url <- "https://es.wikipedia.org/wiki/Anexo:Municipios_de_la_provincia_de_Teruel"
content <- read_html(my_url)
body_table <- content %>%
html_nodes('body') %>%
html_nodes('table') %>%
html_table(dec = ",")
#- solo hay una tabla
Teruel <- body_table[[1]] #- estoy haciendo subsetting de una lista
disgressió: és el mateix un data.frame que una tibble [🌶🌶🌶]
Sí i no (!!!)
seleccionant “manualment” un fitxer de dades
(Web del curs aquí)