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