Dplyr: como usar mutate() com múltiplas condições


Você pode usar a seguinte sintaxe básica em dplyr para usar a função mutate() para criar uma nova coluna com base em múltiplas condições:

 library (dplyr)

df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

Esta sintaxe específica cria uma nova coluna chamada class que assume os seguintes valores:

  • A_Bom se a equipe for igual a A e os pontos forem maiores ou iguais a 20.
  • A_Bad se a equipe for igual a A e os pontos forem menores que 20.
  • B_Bom se a equipe for igual a B e os pontos forem maiores ou iguais a 20.
  • B_Bad se nenhuma das condições anteriores for atendida.

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

Relacionado: Como usar case_when() em dplyr

Exemplo: Use mutate() em dplyr com múltiplas condições

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 (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'),
                 points=c(22, 30, 34, 19, 14, 12, 39, 15, 22, 25))

#view data frame
df

   team points
1 to 22
2 to 30
3 to 34
4 to 19
5 to 14
6 B 12
7 B 39
8 B 15
9 B 22
10 B 25

Podemos usar a seguinte sintaxe com a função mutate() para criar uma nova coluna chamada class cujos valores são baseados nos valores das colunas team e points :

 library (dplyr)
#add new column based on values in team and points columns
df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

#view updated data frame
df

   team points class
1 A 22 A_Good
2 A 30 A_Good
3 A 34 A_Good
4 A 19 A_Bad
5 A 14 A_Bad
6 B 12 B_Bad
7 B 39 B_Good
8 B 15 B_Bad
9 B 22 B_Good
10 B 25 B_Good

  A nova coluna de classe assume valores com base nos valores das colunas de equipe e pontos .

Por exemplo, a primeira linha tinha um valor A na coluna equipe e um valor de pontos maior ou igual a 20, portanto recebeu um valor A_Bom na coluna nova classe .

Observe que neste exemplo, usamos o símbolo & como um operador “AND” para verificar se duas condições eram verdadeiras antes de atribuir um valor na coluna da classe .

No entanto, poderíamos ter usado o | símbolo como um operador “OR” para verificar se alguma das duas condições foi atendida antes de atribuir um valor na coluna da classe .

Recursos adicionais

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

dplyr: Como alterar uma variável se a coluna contiver uma string
dplyr: Como alterar os níveis dos fatores usando mutate()
dplyr: Como usar a função across()

Add a Comment

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