Jak grupować i filtrować dane za pomocą dplyr


Do grupowania i filtrowania danych przy użyciu pakietu dplyr w R można użyć następującej podstawowej składni:

 df %>%
  group_by(team) %>%
  filter(any(points = = 10 ))

Ta szczególna składnia grupuje ramki danych według kolumny zwanej zespołem i filtruje tylko te grupy, w których co najmniej jedna wartość w kolumnie punktów jest równa 10.

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

Przykład: grupowanie i filtrowanie danych 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', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 15, 8, 4, 10, 10, 12, 12, 7))

#view data frame
df

  team points
1 to 10
2 to 15
3 to 8
4 B 4
5 B 10
6 B 10
7 C 12
8 C 12
9 C 7

Możemy użyć poniższego kodu, aby pogrupować ramkę danych według wartości w kolumnie Zespół , a następnie odfiltrować wszystkie grupy, które nie mają przynajmniej jednej wartości w kolumnie Punkty równej 10:

 library (dplyr)

#group by team and filter out teams where no points value is equal to 10
df %>%
  group_by(team) %>%
  filter(any(points == 10 ))

# A tibble: 6 x 2
# Groups: team [2]
  team points
    
1 to 10
2 to 15
3 to 8
4 B 4
5 B 10
6 B 10

Należy pamiętać, że wszystkie wiersze, w których drużyna „C” jest równa, są filtrowane, ponieważ w kolumnie punktów dla drużyny „C” nie ma wartości równej 10.

Pamiętaj, że to tylko przykład filtra, który możemy zastosować.

Na przykład moglibyśmy zastosować inny filtr, w którym filtrujemy drużyny, które mają co najmniej jedną wartość w kolumnie punktów większą niż 13:

 library (dplyr)

#group by team and filter out teams where no points value is greater than 13
df %>%
  group_by(team) %>%
  filter(any(points > 13 ))

# A tibble: 3 x 2
# Groups: team [1]
  team points
    
1 to 10
2 to 15
3 to 8

Należy pamiętać, że zachowane są tylko linie, w których zespół jest równy „A”, ponieważ jest to jedyny zespół, który ma co najmniej jedną wartość punktową większą niż 13.

Uwaga : Pełną dokumentację funkcji filtrującej w dplyr można znaleźć tutaj .

Dodatkowe zasoby

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

Jak wybrać pierwszy wiersz według grupy za pomocą dplyr
Jak filtrować według wielu warunków za pomocą dplyr
Jak filtrować wiersze zawierające określony ciąg za pomocą dplyr

Dodaj komentarz

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