Como usar gsub() em r para substituir vários modelos


A função gsub() em R pode ser usada para substituir todas as ocorrências de um determinado padrão em uma string em R.

Para substituir vários modelos de uma vez, você pode usar uma instrução gsub() aninhada:

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

No entanto, um método muito mais rápido é a função stri_replace_all_regex() do pacote stringi , que usa a seguinte sintaxe:

 library (stringi)

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

Os exemplos a seguir mostram como usar cada método na prática.

Método 1: Substitua vários modelos por gsub() aninhados

Suponha que temos o seguinte quadro de dados em 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

Podemos usar uma instrução gsub() aninhada para substituir vários padrões na coluna de 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

Observe que A, B e C na coluna de nome foram todos substituídos por novos valores.

Método 2: Substitua vários modelos por stringi

Uma maneira muito mais rápida de substituir vários padrões é usar a função stri_replace_all_regex() do pacote stringi .

O código a seguir mostra como usar esta função:

 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

Observe que o quadro de dados resultante corresponde ao do exemplo anterior.

Se o seu quadro de dados for moderadamente grande, você notará que esta função é muito mais rápida que a função gsub() .

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras operações comuns em R:

Como usar a função replace() em R
Como substituir condicionalmente valores no dataframe R

Add a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *