Como usar um filtro condicional no dplyr


Você pode usar a seguinte sintaxe básica para aplicar um filtro condicional em um quadro de dados usando funções do pacote dplyr em R:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

Este exemplo específico filtra linhas em um quadro de dados onde o valor da coluna de pontos é maior que um determinado valor, condicional ao valor da coluna da equipe .

Relacionado: Uma introdução a case_when() em dplyr

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

Exemplo: como usar filtro condicional em 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 (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 12, 17, 18, 24, 29, 29, 34, 35))

#view data frame
df

  team points
1 to 10
2 to 12
3 to 17
4 B 18
5 B 24
6 B 29
7 C 29
8 C 34
9 C 35

Agora suponha que queiramos aplicar o seguinte filtro condicional:

  • Mantenha linhas apenas para jogadores do Time A cujos pontos sejam maiores que 15.
  • Mantenha linhas apenas para jogadores do Time B onde os pontos forem maiores que 20.
  • Mantenha linhas apenas para jogadores do Time C onde os pontos forem superiores a 30.

Podemos usar as funções filter() e case_when() do pacote dplyr para aplicar este filtro condicional no quadro de dados:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

  team points
1 to 17
2 B 24
3 B 29
4 C 34
5 C 35

As linhas no quadro de dados agora são filtradas onde o valor na coluna de pontos é maior que um determinado valor, condicional ao valor na coluna da equipe .

Nota #1 : Na função case_when() , usamos TRUE no último argumento para representar todos os valores na coluna da equipe que não são iguais a “A” ou “B”.

Nota nº 2 : você pode encontrar a documentação completa para a função dplyr case_when() aqui .

Recursos adicionais

Os tutoriais a seguir explicam como executar outras funções comuns no dplyr:

Como filtrar por número de linha usando dplyr
Como filtrar por múltiplas condições usando dplyr
Como usar um filtro “não incluído” no dplyr

Add a Comment

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