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

Dodaj komentarz

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