Chapitre 2 Le tidyverse
Le tidyverse
est un ensemble de packages proposant une syntaxe cohérente pour remplir l’essentiel des traitements propres à la science de la données, de la lecture des données à la valorisation, en passant par la modélisation. Le manifeste du tidyverse
comprend 4 principes clefs pour les packages :
Utiliser les structures de données existantes : ne pas créer des objets ad hoc ;
Utiliser l’opérateur pipe ;
S’intégrer dans l’approche de programmation fonctionnelle de R ;
Designé pour les être humains : favoriser la facilité d’usage à la performance machine.
2.1 Présentation des packages
2.1.1 Des packages pour lire des données
2.1.1.2 Hors tidyverse
{odbc}
/{Rposgresql}
pour accéder à des données stockées sous forme de base de données{sf}
pour lire des données spatiales{rsdmx}
pour lire des données sdmx
2.1.3 Des packages pour nettoyer des données
2.1.3.1 tidyverse
{forcats}
permet de manipuler les variables de type catégoriel (ou factor en R){stringr}
permet de manipuler des chaînes de caractères{lubridate}
permet de manipuler des dates
2.1.3.2 Hors tidyverse
{stringi}
permet de manipuler des chaînes de caractères{RcppRoll}
qui regroupe des opérations fenêtrées ou glissantes
2.2 Les spécificités du tidyverse
Quelques spécificités des fonctions de ce framework :
- Ces packages sont orientés manipulation de dataframes et non de vecteurs
- En conséquence, on utilise jamais l’indexation des colonnes de tables (le “$”) pour appeler une variable
- Chaque fonction ne fait qu’une chose et une seule (c’est une opération élémentaire)
- L’ensemble des fonctions obéissent à la même logique, ce qui permet de simplifier l’apprentissage
- L’ensemble de ces opérations élémentaires peuvent s’enchaîner à la manière d’un ETL avec le pipe
2.3 D’autres approches possibles
Les fonctions que nous allons voir obéissent à une logique intégrée et simple, qui permet des manipulations complexes, à partir du moment ou l’on est capable d’identifier et de sérier chaque opération élémentaire à réaliser.
D’autres packages permettent également de réaliser ce type de manipulations. La différence est qu’ils sont souvent dédiés à une tâche spécifique, ce qui rend la cohérence moins évidente lorsque l’on doit réaliser plusieurs opérations.
Un autre package propose toutefois une vision intégrée de la sorte : {data.table}
.
Plusieurs différences sont à noter :
{data.table}
est plus rapide sur d’importants volumes de données, le code est très concis.
{dplyr}
est plus simple à apprendre, le code est plus lisible, il peut s’appliquer à des formats de données multiples, il s’intègre dans un framework global qui va de la lecture des données ({readr}
,{readxl}
,{haven}
…) à leur valorisation ({ggplot2}
).