Taller d’R Targets
Resum
Aquest repositori és un projecte de mostra per a un taller d’R Targets.
Pretén ser una mostra de com organitzar un projecte en R utilitzant bones pràctiques i una estructura tipus pipeline
amb el paquet Targets.
Utilitza dades aconseguides a partir d’un scraping de la web d’Idealista cortesia del Sindicat de Llogateres.
Abans de reproduir aquest projecte recomanem fer un cop d’ull a la documentació oficial d’R Targets.
Estructura del projecte
Pel fet de seguir les bones pràctiques i els requeriments del paquet Targets el projecte segueix una estructura determinada.
Directoris i fitxers:
_targets.R
: És el fitxer índex del projecte targets. Conté la definició del pipeline.R/idealista_functions.R
: Conté les funcions, el codi específic per formar cada un dels nodes del pipeline.data/
: DIrectori que conté les dades inicials que es fan servir com a punt de partida del projecte.docs/
: Conté els documents de text. En aquest cas l’article que volem escriure.renv.lock
: Fitxer generat automàticament per Renv que conté la llista de paquests necessaris per executar el projecte. Aquest fitxer és el que llegeix la comandarenv::restore()
Per crear l’entron d’R..gitignore
Fitxer que utilitza GIT per saber quins fitxers ha d’ignorar, és a dir no pujar al repositori quan guardes el codi.
Dades de partida
Partim d’uns CSV que són el resultat d’un scraping de la web d’Idealista que es poden trobar a la carpeta data/
.
data/20231229_idealista_locations_ppcc.csv
Conté totes les localitzacions (barri, districte, pobles, provínices) de les quals tenim dades i un conjunt de metadades associades.data/20231229_idealista_price_evolution_ppcc.csv
Conté l’històric de preus de lloguer i de venta de cada una de les localitzacions
Pipeline
El projecte s’estructura al voltant d’una sèrie d’objectius que representen les tasques de processament i visualització de dades. Cada objectiu és un pas en el pipeline, responsable d’una peça específica de l’anàlisi.
- locations_file, locations_raw i locations: Representen, respectaivament, el fitxer de partida, la importació del fitxer i la neteja de les dades (adequació a la forma que necessitem). El resultat del node locations és un data frame en què cada fila representa una localització.
- price_evolution_file, price_evolution_raw i price_evolution: Representen, respectaivament, el fitxer de partida, la importació del fitxer i la neteja de les dades (adequació a la forma que necessitem). El resultat del node price_evolution és un data frame en què cada fila representa un mes concret per una localització amb el preu mitjà de lloguer i compra.
- locations_with_price_evolution: És el join de locations i price_evolution. El resultat és un data frame en què cada fila és un lloc, un punt en el temps (un mes concret).
- location_last_price: És un data frame derivat de locations_with_price_evolution que només té l’últim valor de lloguer i compra disponible en les dades. Així, cada localització només hi apreix amb representada amb una sola fila amb l’últim (més nou) valor de lloguer i compra. Ens serveix per poder fer un mapa.
- plot_rent_price_by… Els dos nodes que tenen aquest prefix són gràfics d’evolució de preu fets amb
ggplot
. - map_sale_price_muni_cat Dibuixa un mapa a partir de les dades de location_last_price.
- article És una mostra d’un Rmarkdown que recull els resulatts dels gràfics i mapa en forma d’article (text random de mostra generat artificialment).
Mapa i plots
Comencem
Per utilitzar aquest projecte, cloneu el repositori i assegureu-vos que teniu Renv instal·lat. Podeu executar el pipeline utilitzant les funcions del paquet targets
, com ara tar_make()
per executar tot el pipeline o tar_visnetwork()
per visualitzar l’estructura del pipeline.
Setup
Per configurar i començar a utilitzar aquest projecte, segueix els passos següents:
Assegura’t que tens instal·lat prèviament l’Renv:
install.packages(’renv’)
Clonar el repositori: Clona el repositori utilitzant Git amb la comanda següent:
git clone https://github.com/catbru/taller_targets.git
Si no disposes de GIT pots descarregar el projecte com un ZIP fent clic a la pestanya verda code del repositori a la pàgina mateix de GitHub.
Crear un projecte d’R Studio: Utilitzant R Studio ves al directori que acabes de clonar i crea un nou projecte d’R Studio utilitzant l’opció ‘using Renv’.
Activar renv: En R Studio, obre la consola i activa l’entorn de renv amb:
::activate() renv
Restaurar les dependències: Encara en la consola, restaura les dependències del projecte amb:
::restore() renv
Visualitzar la xarxa de dependències dels targets: Per entendre millor com estan interconnectats els diferents components del projecte, pots visualitzar la xarxa de dependències dels targets amb:
::tar_visnetwork(targets_only = TRUE) targets
El paràmetre
targets_only = TRUE
fa que no presenti les funcions al gràfic, cosa que el fa molt més entenedor si el que volem és representar els diferents passos de transformació.Els nodes apareixen de color verd quan Targets té el resultat guardat. SI fem una modificació de la funció veurem que canvia el color fins que no fem
tar_make()
.Executar el pipeline: Finalment, per executar el pipeline complet del projecte, utilitza la següent comanda:
::tar_make() targets
Visualitza l’article resultant
Un cop processats tots els passos del pipe l’últim és la generació d’un html a partir d’un Rmd que pots trobar a
docs/article.Rmd
. Com a resultat es crea un html adocs/article.html
que pots obrir amb un navegador fent doble clic sobre l’arxiu o, si ho prefereixes, per obrir-lo des de l’R:::viewer('docs/article.html') rstudioapi
Visualitza el resultat de qualsevol node en concret
Podem veure el resultat o guardar-lo en una variable de qualsevol punt (node) del pipeline utilitzant la comanda
tar_read()
. Per exemple per aconseguir l’històric de preus de totes les localitzacions disponibles.<- targets::tar_read('locations_with_price_evolution') prices prices