Jak filtrować ramkę danych bez utraty linii na za pomocą dplyr


Możesz użyć poniższej podstawowej składni, aby filtrować ramkę danych bez utraty wierszy zawierających wartości NA, korzystając z funkcji w pakietach dplyr i Tidyr w 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 ))

Należy pamiętać, że formuła ta korzysta z funkcji zamiany_na() z pakietu Tidyr w celu konwersji wartości NA na TRUE, aby nie zostały usunięte z ramki danych podczas filtrowania.

Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.

Przykład: filtruj ramkę danych bez utraty wierszy NA za pomocą dplyr

Załóżmy, że mamy następującą ramkę danych w R, która zawiera informacje o różnych koszykarzach:

 #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

Załóżmy teraz, że używamy funkcji filter() z pakietu dplyr do filtrowania ramki danych tak, aby zawierała tylko te wiersze, których wartość w kolumnie zespołu nie jest równa 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

Należy pamiętać, że odfiltrowano każdy wiersz, w którym wartość w kolumnie zespołu równa się A, łącznie z wierszami, w których wartość w kolumnie zespołu równa się NA.

Jeśli chcemy filtrować wiersze, w których zespół jest równy A i zachować wiersze z wartościami NA, możemy zastosować następującą składnię:

 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

Należy zauważyć, że każdy wiersz, w którym wartość w kolumnie zespołu równa się A, został odfiltrowany, ale zachowaliśmy wiersze, w których wartość w kolumnie zespołu równa się NA.

Uwaga : Pełną dokumentację funkcji Tidyr zamiany_na() można znaleźć tutaj .

Dodatkowe zasoby

Poniższe samouczki wyjaśniają, jak wykonywać inne typowe funkcje w dplyr:

Jak filtrować według numeru wiersza za pomocą dplyr
Jak filtrować według wielu warunków za pomocą dplyr
Jak korzystać z filtra „nieuwzględnionego” w dplyr

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *