Jak wybrać pierwszy wiersz według grupy za pomocą dplyr


Często możesz chcieć wybrać pierwszy wiersz każdej grupy, używając pakietu dplyr w R. Możesz w tym celu użyć następującej podstawowej składni:

 df %>%
  group_by (group_var) %>%
  arrange (values_var) %>%
  filter (row_number()== 1 )

Poniższy przykład pokazuje, jak w praktyce wykorzystać tę funkcję.

Przykład: wybierz pierwszy wiersz według grupy w R

Załóżmy, że mamy następujący zbiór danych w R:

 #create dataset
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C', 'C' ),
                 points=c(4, 9, 7, 7, 6, 13, 8, 8, 4, 17))

#view dataset
df

   team points
1 to 4
2 to 9
3 to 7
4 B 7
5 B 6
6 B 13
7 C 8
8 C 8
9 C 4
10 C 17

Poniższy kod pokazuje, jak używać pakietu dplyr do wybierania pierwszego wiersza według grupy w R:

 library (dplyr)

df %>%
  group_by (team) %>%
  arrange (points) %>%
  filter (row_number()== 1 )

# A tibble: 3 x 2
# Groups: team [3]
  team points
    
1 to 4
2 C 4
3 B 6

Domyślnie aranżacja() sortuje wartości w kolejności rosnącej, ale możemy łatwo posortować wartości w kolejności malejącej:

 df %>%
  group_by (team) %>%
  arrange ( desc (dots)) %>%
  filter (row_number()== 1 )

# A tibble: 3 x 2
# Groups: team [3]
  team points
    
1 C 17
2 B 13
3 to 9

Zauważ, że możesz łatwo zmodyfikować ten kod, aby wybrać n-ty wiersz w każdej grupie. Po prostu zmień numer_wiersza() == n .

Na przykład, jeśli chcesz wybrać drugi wiersz według grupy, możesz użyć następującej składni:

 df %>%
  group_by (team) %>%
  arrange ( desc (dots)) %>%
  filter (row_number()== 2 )

Możesz też użyć następującej składni, aby wybrać ostatni wiersz według grupy:

 df %>%
  group_by (team) %>%
  arrange ( desc (dots)) %>%
  filter (row_number()== n() )

Dodatkowe zasoby

Jak ułożyć linie w R
Jak liczyć obserwacje na grupę w R
Jak znaleźć maksymalną wartość na grupę w R

Dodaj komentarz

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