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