Como substituir vários valores em um quadro de dados usando dplyr


Você pode usar a seguinte sintaxe básica para substituir vários valores em um quadro de dados em R usando funções do pacote dplyr :

 library (dplyr)

df %>%
  mutate(var1 = recode(var1, ' oldvalue1 ' = ' newvalue1 ', ' oldvalue2 ' = ' newvalue2 '), 
         var2 = recode(var2, ' oldvalue1 ' = ' newvalue1 ', ' oldvalue2 ' = ' newvalue2 '))

O exemplo a seguir mostra como usar essa sintaxe na prática.

Exemplo: Substitua vários valores usando dplyr

Suponha que temos o seguinte quadro de dados em R que contém informações sobre vários jogadores de basquete:

 #create data frame
df <- data. frame (conf=c('East', 'East', 'West', 'West', 'North'),
                 position=c('Guard', 'Guard', 'Guard', 'Guard', 'Forward'),
                 dots=c(22, 25, 29, 13, 18))

#view data frame
df

   conf position points
1 East Guard 22
2 East Guard 25
3 West Guard 29
4 West Guard 13
5 North Forward 18

Agora suponha que queiramos substituir os seguintes valores no quadro de dados:

  • Coluna ‘conf’:
    • Substitua “Leste” por “E”
    • Mude “Oeste” para “W”
    • Substitua “Norte” por “N”
  • Coluna “Posição”:
    • Mude “Guarda” para “G”
    • Altere “Avançar” para “F”

Podemos usar as funções mutate() e recode() para fazer isso:

 library (dplyr)

#replace multiple values in conf and position columns
df %>%
  mutate(conf = recode(conf, ' East ' = ' E ', ' West ' = ' W ', ' North ' = ' N '), 
         position = recode(position, ' Guard ' = ' G ', ' Forward ' = ' F '))

  conf position points
1EG 22
2 EG 25
3 WG 29
4 WG 13
5 NF 18

Observe que cada um dos valores nas colunas “conf” e “position” foram substituídos por valores específicos.

Observe também que os valores na coluna “pontos” permaneceram inalterados.

Recursos adicionais

Os tutoriais a seguir explicam como realizar outras tarefas comuns usando dplyr:

Como recodificar valores usando dplyr
Como substituir NA por Zero no dplyr
Como filtrar linhas contendo uma determinada string usando dplyr

Add a Comment

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