Tidy data

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 par pivot_longer().
  • spread() - transforme les données en format large. Remplacée par pivot_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.