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()