Hoe gsub() in r te gebruiken om meerdere sjablonen te vervangen


De functie gsub() in R kan worden gebruikt om alle exemplaren van een bepaald patroon in een string in R te vervangen.

Om meerdere modellen tegelijk te vervangen, kunt u een geneste gsub()- instructie gebruiken:

 df$col1 <- gsub(' old1 ', ' new1 ',
           gsub(' old2 ', ' new2 ',
           gsub(' old3 ', ' new3 ', df$col1)))

Een veel snellere methode is echter de functie stri_replace_all_regex() uit het stringi- pakket, die de volgende syntaxis gebruikt:

 library (stringi)

df$col1 <- stri_replace_all_regex(df$col1,
                                  pattern=c(' old1 ', ' old2 ', ' old3 '),
                                  replacement=c(' new1 ', ' new2 ', ' new3 '),
                                  vectorize= FALSE )

De volgende voorbeelden laten zien hoe u elke methode in de praktijk kunt gebruiken.

Methode 1: Vervang meerdere sjablonen door geneste gsub()

Stel dat we het volgende dataframe in R hebben:

 #create data frame
df <- data. frame (name=c('A', 'B', 'B', 'C', 'D', 'D'),
                 dots=c(24, 26, 28, 14, 19, 12))

#view data frame
df

  name points
1 to 24
2 B 26
3 B 28
4 C 14
5 D 19
6 D 12

We kunnen een geneste gsub()- instructie gebruiken om meerdere patronen in de naamkolom te vervangen:

 #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
1Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12

Houd er rekening mee dat A, B en C in de naamkolom allemaal zijn vervangen door nieuwe waarden.

Methode 2: Vervang meerdere modellen door stringi

Een veel snellere manier om meerdere patronen te vervangen is door de functie stri_replace_all_regex() uit het stringi- pakket te gebruiken.

De volgende code laat zien hoe u deze functie kunt gebruiken:

 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
1Andy 24
2 Bob 26
3 Bob 28
4 Chad 14
5 D 19
6 D 12

Merk op dat het resulterende dataframe overeenkomt met dat van het vorige voorbeeld.

Als uw dataframe zelfs maar redelijk groot is, zult u merken dat deze functie veel sneller is dan de functie gsub() .

Aanvullende bronnen

In de volgende tutorials wordt uitgelegd hoe u andere veelvoorkomende bewerkingen in R kunt uitvoeren:

Hoe de functie Replace() in R te gebruiken
Hoe waarden in R-dataframe voorwaardelijk te vervangen

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert