So verwenden sie gsub() in r, um mehrere vorlagen zu ersetzen


Die Funktion gsub() in R kann verwendet werden, um alle Vorkommen eines bestimmten Musters in einer Zeichenfolge in R zu ersetzen.

Um mehrere Modelle gleichzeitig zu ersetzen, können Sie eine verschachtelte gsub()- Anweisung verwenden:

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

Eine viel schnellere Methode ist jedoch die Funktion stri_replace_all_regex() aus dem Paket stringi , die die folgende Syntax verwendet:

 library (stringi)

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

Die folgenden Beispiele zeigen, wie die einzelnen Methoden in der Praxis angewendet werden.

Methode 1: Ersetzen Sie mehrere Vorlagen durch verschachteltes gsub()

Angenommen, wir haben den folgenden Datenrahmen in R:

 #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

Wir können eine verschachtelte gsub()- Anweisung verwenden, um mehrere Muster in der Namensspalte zu ersetzen:

 #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

Beachten Sie, dass A, B und C in der Namensspalte alle durch neue Werte ersetzt wurden.

Methode 2: Ersetzen Sie mehrere Modelle durch Stringi

Eine viel schnellere Möglichkeit, mehrere Muster zu ersetzen, ist die Verwendung der Funktion stri_replace_all_regex() aus dem Paket stringi .

Der folgende Code zeigt, wie diese Funktion verwendet wird:

 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

Beachten Sie, dass der resultierende Datenrahmen mit dem des vorherigen Beispiels übereinstimmt.

Wenn Ihr Datenrahmen auch nur mäßig groß ist, werden Sie feststellen, dass diese Funktion viel schneller ist als die Funktion gsub() .

Zusätzliche Ressourcen

In den folgenden Tutorials wird erläutert, wie andere gängige Vorgänge in R ausgeführt werden:

So verwenden Sie die Funktion replace() in R
So ersetzen Sie Werte im R-Datenrahmen bedingt

Einen Kommentar hinzufügen

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