Jak używać filtra warunkowego w dplyr
Możesz użyć następującej podstawowej składni, aby zastosować filtr warunkowy do ramki danych za pomocą funkcji z pakietu dplyr w 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))
Ten konkretny przykład filtruje wiersze w ramce danych, w których wartość kolumny punktów jest większa niż określona wartość, w zależności od wartości kolumny zespołu .
Powiązane: Wprowadzenie do case_when() w dplyr
Poniższy przykład pokazuje, jak zastosować tę składnię w praktyce.
Przykład: Jak używać filtra warunkowego w 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', '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
Załóżmy teraz, że chcemy zastosować następujący filtr warunkowy:
- Utrzymuj linie tylko dla graczy Drużyny A , którzy mają więcej niż 15 punktów.
- Utrzymuj linie tylko dla graczy Drużyny B , którzy mają więcej niż 20 punktów.
- Utrzymuj linie tylko dla graczy z Drużyny C , którzy mają więcej punktów niż 30.
Możemy użyć funkcji filter() i case_when() z pakietu dplyr , aby zastosować ten filtr warunkowy do ramki danych:
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
Wiersze w ramce danych są teraz filtrowane, jeśli wartość w kolumnie punktów jest większa niż określona wartość, pod warunkiem , że wartość w kolumnie zespołu .
Uwaga nr 1 : W funkcji case_when() używamy TRUE w ostatnim argumencie, aby reprezentować wszystkie wartości w kolumnie zespołu, które nie są równe „A” lub „B”.
Uwaga nr 2 : Pełną dokumentację funkcji dplyr case_when() 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