Come utilizzare gsub() in r per sostituire più modelli


La funzione gsub() in R può essere utilizzata per sostituire tutte le occorrenze di un determinato modello in una stringa in R.

Per sostituire più modelli contemporaneamente, puoi utilizzare un’istruzione gsub() nidificata:

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

Tuttavia, un metodo molto più veloce è la funzione stri_replace_all_regex() del pacchetto stringi , che utilizza la seguente sintassi:

 library (stringi)

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

Gli esempi seguenti mostrano come utilizzare ciascun metodo nella pratica.

Metodo 1: sostituisci più modelli con gsub() nidificato

Supponiamo di avere il seguente frame di dati 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

Possiamo utilizzare un’istruzione gsub() nidificata per sostituire più modelli nella colonna del nome :

 #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

Tieni presente che A, B e C nella colonna del nome sono stati tutti sostituiti con nuovi valori.

Metodo 2: sostituisci più modelli con stringi

Un modo molto più veloce per sostituire più modelli è utilizzare la funzione stri_replace_all_regex() dal pacchetto stringi .

Il codice seguente mostra come utilizzare questa funzione:

 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

Si noti che il frame di dati risultante corrisponde a quello dell’esempio precedente.

Se il tuo frame di dati è anche moderatamente grande, noterai che questa funzione è molto più veloce della funzione gsub() .

Risorse addizionali

I seguenti tutorial spiegano come eseguire altre operazioni comuni in R:

Come utilizzare la funzione replace() in R
Come sostituire condizionalmente i valori nel dataframe R

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *