Manipuler les données avec dplyr
La version originale de ce chapitre a été écrite par Julien Barnier dans le cadre de son Introduction à R et au tidyverse.
Ce chapitre est évoqué dans le webin-R #04 (manipuler les données avec dplyr) sur YouTube.
dplyr
est une extension facilitant le traitement et la manipulation de données contenues dans une ou plusieurs tables (qu’il s’agisse de data frame ou de tibble). Elle propose une syntaxe claire et cohérente, sous formes de verbes, pour la plupart des opérations de ce type.
Par ailleurs, les fonctions de dplyr
sont en général plus rapides que leur équivalent sous R de base, elles permettent donc de traiter des données de grande dimension1.
dplyr
part du principe que les données sont tidy (voir la section consacrée aux tidy data). Les fonctions de l’extension peuvent s’appliquer à des tableaux de type data.frame
ou tibble
, et elles retournent systématiquement un tibble
(voir la section dédiée).
Préparation
dplyr
fait partie du coeur du tidyverse, elle est donc chargée automatiquement avec :
library(tidyverse)
On peut également la charger individuellement avec :
library(dplyr)
Dans ce qui suit on va utiliser les données du jeu de données nycflights13
, contenu dans l’extension du même nom (qu’il faut donc avoir installé). Celui-ci correspond aux données de tous les vols au départ d’un des trois aéroports de New-York en 2013. Il a la particularité d’être réparti en trois tables :
flights
contient des informations sur les vols : date, départ, destination, horaires, retard…airports
contient des informations sur les aéroportsairlines
contient des données sur les compagnies aériennes
On va charger les trois tables du jeu de données :
library(nycflights13)
## Chargement des trois tables du jeu de données
data(flights)
data(airports)
data(airlines)
Normalement trois objets correspondant aux trois tables ont dû apparaître dans votre environnement.
Ces trois tableaux sont au format tibble
. Il s’agit d’une extension des tableaux de données utilisé par le tidyverse
. Les tibble
{data-pkg=“tibble} s’utilisent comme des data.frame
, avec justes quelques différentes :
- leur classe est
c("tbl_df", "tbf", "data.frame")
; - leur présentation dans la console est amélioriée ;
df[, j]
renvoie toujours untibble
avec une seule colonne (et non le contenu de cette colonne que l’on obtient avecdf[[j]]
) ;- les colonnes d’un
tibble
peuvent être des listes ; - à la différence d’un tableau de données classique où il est possible d’utiliser un nom partiel (par exemple écrire
df$ab
pour obtenirdf$abc
), il est obligatoire d’utiliser les noms complets avec untibble
.
Pour convertir un tableau de données en tibble
, on utilisera la fonction as_tibble
.
Les verbes de dplyr
La manipulation de données avec dplyr
se fait en utilisant un nombre réduit de verbes, qui correspondent chacun à une action différente appliquée à un tableau de données.
slice
Le verbe slice
sélectionne des lignes du tableau selon leur position. On lui passe un chiffre ou un vecteur de chiffres.
Si on souhaite sélectionner la 345e ligne du tableau airports
:
slice(airports, 345)
Si on veut sélectionner les 5 premières lignes :
slice(airports, 1:5)
filter
filter
sélectionne des lignes d’un tableau de données selon une condition. On lui passe en paramètre un test, et seules les lignes pour lesquelles ce test renvoit TRUE
(vrai) sont conservées.
Par exemple, si on veut sélectionner les vols du mois de janvier, on peut filtrer sur la variable month de la manière suivante :
filter(flights, month == 1)