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