Comment utiliser rbindlist dans R pour créer une table de données à partir de plusieurs



La fonction rbindlist() dans R peut être utilisée pour créer un data.table à partir d’une liste de nombreux objets data.table ou data.frame.

Cette fonction utilise la syntaxe de base suivante :

rbindlist(l, use.names="check", fill=FALSE, idcol=NULL)

où:

  • l : Liste contenant des objets data.table, data.frame ou list.
  • use.names : TRUE lie par noms de colonnes. FALSE lie par position.
  • fill : TRUE remplit les valeurs manquantes avec NA.
  • idcol : crée une colonne indiquant de quel élément de liste proviennent ces lignes.

L’exemple suivant montre comment utiliser cette fonction dans la pratique.

Exemple : utilisez rbindlist pour créer une table de données

Supposons que nous ayons la liste suivante d’objets data.table et data.frame dans R :

library(data.table)

#create data frames and data tables
data1 <- data.table(team=c('A', 'B', 'C'),
                    points=c(22, 27, 38))

data2 <- data.table(team=c('D', 'E', 'F'),
                    points=c(22, 14, 20))

data3 <- data.frame(team=c('G', 'H', 'I'),
                    points=c(11, 15, 18))

#view data frames and data tables
print(data1)
print(data2)
print(data3)

   team points
1:    A     22
2:    B     27
3:    C     38
   team points
1:    D     22
2:    E     14
3:    F     20
  team points
1    G     11
2    H     15
3    I     18

Nous pouvons utiliser la fonction rbindlist() suivante pour lier la liste des objets data.table et data.frame en un seul data.table :

#define list of objects to bind together
data_list <- list(data1, data2, data3)

#bind together list of objects
big_data <- rbindlist(data_list)

#view result
big_data

   team points
1:    A     22
2:    B     27
3:    C     38
4:    D     22
5:    E     14
6:    F     20
7:    G     11
8:    H     15
9:    I     18

Le résultat est un objet data.table avec neuf lignes composées des lignes de la liste d’objets que nous avons fournie.

On peut également utiliser la fonction class() pour vérifier que le résultat est bien un objet data.table :

#view class of resulting object
class(big_data)

[1] "data.table" "data.frame"

On voit que le résultat est bien un objet data.table.

L’avantage d’utiliser rbindlist

L’alternative à l’utilisation de rbindlist serait d’utiliser do.call avec la fonction rbind en base R :

#use rbind to bind together list of objects
do.call("rbind", data_list)

   team points
1:    A     22
2:    B     27
3:    C     38
4:    D     22
5:    E     14
6:    F     20
7:    G     11
8:    H     15
9:    I     18

Ce code produit le même résultat mais il s’avère que rbindlist est nettement plus rapide, en particulier pour les objets data.table ou data.frame extrêmement volumineux.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :

Comment convertir une table en bloc de données dans R
Comment ajouter des lignes à un bloc de données dans R
Comment diviser un bloc de données dans R

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *