Comment utiliser gsub() dans R pour remplacer plusieurs modèles
La fonction gsub() dans R peut être utilisée pour remplacer toutes les occurrences d’un certain modèle dans une chaîne dans R.
Pour remplacer plusieurs modèles à la fois, vous pouvez utiliser une instruction gsub() imbriquée :
df$col1 <- gsub('old1', 'new1', gsub('old2', 'new2', gsub('old3', 'new3', df$col1)))
Cependant, une méthode beaucoup plus rapide est la fonction stri_replace_all_regex() du package stringi , qui utilise la syntaxe suivante :
library(stringi) df$col1 <- stri_replace_all_regex(df$col1, pattern=c('old1', 'old2', 'old3'), replacement=c('new1', 'new2', 'new3'), vectorize=FALSE)
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Méthode 1 : remplacer plusieurs modèles par un gsub imbriqué ()
Supposons que nous ayons le bloc de données suivant dans R :
#create data frame
df <- data.frame(name=c('A', 'B', 'B', 'C', 'D', 'D'),
points=c(24, 26, 28, 14, 19, 12))
#view data frame
df
name points
1 A 24
2 B 26
3 B 28
4 C 14
5 D 19
6 D 12
Nous pouvons utiliser une instruction gsub() imbriquée pour remplacer plusieurs modèles dans la colonne nom :
#replace multiple patterns in name column
df$name <- gsub('A', 'Andy',
gsub('B', 'Bob',
gsub('C', 'Chad', df$name)))
#view updated data frame
df
name points
1 Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12
Notez que A, B et C dans la colonne de nom ont tous été remplacés par de nouvelles valeurs.
Méthode 2 : remplacer plusieurs modèles par stringi
Un moyen beaucoup plus rapide de remplacer plusieurs modèles consiste à utiliser la fonction stri_replace_all_regex() du package stringi .
Le code suivant montre comment utiliser cette fonction :
library(stringi) #replace multiple patterns in name column df$name <- stri_replace_all_regex(df$name, pattern=c('A', 'B', 'C'), replacement=c('Andy', 'Bob', 'Chad'), vectorize=FALSE) #view updated data frame df name points 1 Andy 24 2 Bob 26 3 Bob 28 4 Chad 14 5 D 19 6 D 12
Notez que le bloc de données résultant correspond à celui de l’exemple précédent.
Si votre bloc de données est même modérément volumineux, vous remarquerez que cette fonction est beaucoup plus rapide que la fonction gsub() .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :
Comment utiliser la fonction replace() dans R
Comment remplacer conditionnellement les valeurs dans la trame de données R