Comment répliquer des lignes dans un bloc de données dans R



Vous pouvez utiliser les méthodes suivantes pour répliquer des lignes dans un bloc de données dans R à l’aide des fonctions du package dplyr :

Méthode 1 : répliquer chaque ligne le même nombre de fois

library(dplyr)

#replicate each row 3 times
df %>% slice(rep(1:n(), each = 3))

Méthode 2 : répliquer chaque ligne un nombre de fois différent

library(dplyr)

#replicate the first row 3 times and the second row 5 times
df %>% slice(rep(1:n(), times = c(3, 5)))

Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.

Exemple 1 : Répliquer chaque ligne le même nombre de fois

Supposons que nous ayons le bloc de données suivant avec deux lignes dans R :

#create data frame
df <- data.frame(team=c('A', 'B'),
                 points=c(10, 15),
                 rebounds=c(4, 8),
                 assists=c(2, 5))

#view data frame
df

  team points rebounds assists
1    A     10        4       2
2    B     15        8       5

Nous pouvons utiliser la syntaxe suivante pour répéter chaque ligne du bloc de données trois fois :

library(dplyr)

#create new data frame that repeats each row in original data frame 3 times
new_df <- df %>% slice(rep(1:n(), each = 3))

#view new data frame
new_df

  team points rebounds assists
1    A     10        4       2
2    A     10        4       2
3    A     10        4       2
4    B     15        8       5
5    B     15        8       5
6    B     15        8       5

Notez que chacune des lignes du bloc de données d’origine a été répétée trois fois.

Exemple 2 : répliquer chaque ligne un nombre de fois différent

Supposons que nous ayons le bloc de données suivant avec deux lignes dans R :

#create data frame
df <- data.frame(team=c('A', 'B'),
                 points=c(10, 15),
                 rebounds=c(4, 8),
                 assists=c(2, 5))

#view data frame
df

  team points rebounds assists
1    A     10        4       2
2    B     15        8       5

Nous pouvons utiliser la syntaxe suivante pour répéter la première ligne trois fois et la deuxième ligne cinq fois :

library(dplyr)

#create new data frame that repeats first row 3 times and second row 5 times
new_df <- df %>% slice(rep(1:n(), times = c(3, 5)))

#view new data frame
new_df

  team points rebounds assists
1    A     10        4       2
2    A     10        4       2
3    A     10        4       2
4    B     15        8       5
5    B     15        8       5
6    B     15        8       5
7    B     15        8       5
8    B     15        8       5

Notez que la première ligne du bloc de données d’origine a été répétée trois fois et la deuxième ligne cinq fois.

Connexe : Comment utiliser la fonction slice() dans dplyr

Ressources additionnelles

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

Comment sélectionner des colonnes par index à l’aide de dplyr
Comment sélectionner la première ligne par groupe à l’aide de dplyr
Comment filtrer selon plusieurs conditions à l’aide de dplyr
Comment filtrer les lignes contenant une certaine chaîne à l’aide de dplyr

Ajouter un commentaire

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