Une part importante de toute analyse et de toute recherche est consacrée à la préparation des données. Il est rare que des données puissent être décrites, visualisées et analysées dès leur importation dans R ou Python. Le traitement des données demande du temps et des efforts. Le chapitre précédent présentait le package dplyr, qui contient des fonctions permettant de traiter le contenu d'un data frame. Ce chapitre présente le package tidyr, qui sert à structurer un data frame. L'objectif est d'obtenir des tidy data (données « bien rangées »), ce qui signifie dans la grande majorité des cas que les lignes contiennent les observations (par exemple des patients) et que les colonnes contiennent des informations sur ces observations (par exemple le sexe, l'âge, le revenu, etc.). L'immense majorité des analyses exige que les données soient au format tidy.
Le grand avantage de structurer un data frame de sorte que les colonnes soient des variables est que cela permet d'utiliser des fonctions vectorisées. Une fonction vectorisée prend chaque vecteur comme entrée pour effectuer ses calculs. Si vous avez du mal à comprendre ce qu'est une fonction vectorisée, retenez simplement que presque toutes les fonctions de R sont vectorisées. Dans un data frame, une colonne (variable) peut être considérée comme un vecteur.
Exemple de données au format tidy
Dans l'exemple ci-dessous, les données sont au format tidy, car chaque ligne est une observation (une personne) et chaque colonne est une variable qui décrit cette personne.
| Nom | Âge | Revenu | Niveau d'études | Cholestérol |
|---|---|---|---|---|
| Adam | 45 | 324211 | Études supérieures | 4.5 |
| Zara | 51 | 198765 | Scolarité obligatoire | 7.6 |
Tidy data
Exemple de données qui ne sont pas au format tidy
Dans l'exemple ci-dessous, les données ne sont pas au format tidy, car les variables et leurs valeurs correspondantes sont réparties sur seulement deux colonnes (Variable et Valeur).
| Nom | Variable | Valeur |
|---|---|---|
| Adam | Âge | 45 |
| Adam | Revenu | 324211 |
| Adam | Niveau d'études | Études supérieures |
| Zara | Âge | 51 |
| Zara | Revenu | 198765 |
| Zara | Niveau d'études | Scolarité obligatoire |
Données au « format long » (long format), qui ne sont pas des « tidy data ».
Il n'est pas forcément incorrect que des données soient au format long. Il arrive que les données doivent être au format long pour pouvoir être visualisées ou analysées.
Exemple de tidy data avec mesures répétées
Dans l'exemple ci-dessous, les données sont également au format tidy, car chaque ligne est une observation (une personne) et chaque colonne est une variable qui décrit cette personne, même si la même personne apparaît sur plusieurs lignes. Il s'agit d'un exemple de mesures répétées chez un même individu.
| Nom | Âge | Revenu | Niveau d'études | Cholestérol |
|---|---|---|---|---|
| Adam | 45 | 324211 | Études supérieures | 4.5 |
| Adam | 46 | 384211 | Études supérieures | 7.6 |
| Adam | 47 | 412321 | Études supérieures | 5.1 |
| Adam | 48 | 48921 | Études supérieures | 3.9 |
Tidy data avec mesures répétées.
Le package tidyr contient des fonctions qui réorganisent les données afin de pouvoir les transformer dans différents formats.
Voici quelques exemples de fonctions de tidyr :
pivot_longer()- transforme les données en format long (long format).pivot_wider()- transforme les données en format large (wide format).gather()- transforme les données en format long. Remplacée parpivot_longer().spread()- transforme les données en format large. Remplacée parpivot_wider().unite()- Fusionne des colonnes.separate()- Sépare le contenu d'une colonne en plusieurs colonnes.nest(),unnest(),unnest_longer()– Imbriquent (nest) et désimbriquent (unnest) les données.expand(),complete()– étendent les données.