Como filtrar um quadro de dados sem perder linhas na usando dplyr


Você pode usar a seguinte sintaxe básica para filtrar um quadro de dados sem perder linhas contendo valores NA usando funções nos pacotes dplyr e Tidyr em R:

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

Observe que esta fórmula usa a função replace_na() do pacote Tidyr para converter valores NA em TRUE para que não sejam removidos do quadro de dados durante a filtragem.

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

Exemplo: Filtrar quadro de dados sem perder linhas NA 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 (team=c('A', NA, 'A', 'B', NA, 'C', 'C', 'C'),
                 points=c(18, 13, 19, 14, 24, 21, 20, 28),
                 assists=c(5, 7, 17, 9, 12, 9, 5, 12))

#view data frame
df

  team points assists
1 to 18 5
2 <NA> 13 7
3 A 19 17
4 B 14 9
5 <NA> 24 12
6 C 21 9
7 C 20 5
8 C 28 12

Agora suponha que usamos a função filter() do pacote dplyr para filtrar o quadro de dados para conter apenas as linhas cujo valor na coluna team não é igual a A:

 library (dplyr)

#filter for rows where team is not equal to 'A'
df <- df %>% filter(team != ' A ')

#view updated data frame
df

  team points assists
1 B 14 9
2 C 21 9
3 C 20 5
4 C 28 12

Observe que todas as linhas em que o valor na coluna da equipe é igual a A foram filtradas, incluindo as linhas em que o valor na coluna da equipe é igual a NA.

Se quisermos filtrar linhas onde equipe é igual a A e manter linhas com valores NA, podemos usar a seguinte sintaxe:

 library (dplyr)
library (tidyr)

#filter for rows where team is not equal to 'A' (and keep rows with NA)
df <- df %>% filter((team != ' A ') %>% replace_na( TRUE ))

#view updated data frame
df

  team points assists
1 <NA> 13 7
2 B 14 9
3 <NA> 24 12
4 C 21 9
5 C 20 5
6 C 28 12

Observe que todas as linhas onde o valor na coluna da equipe é igual a A foram filtradas, mas mantivemos as linhas onde o valor na coluna da equipe é igual a NA.

Nota : Você pode encontrar a documentação completa para a função Tidyr replace_na() 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 *