Как выбрать первую строку по группе с помощью dplyr
Часто вам может потребоваться выбрать первую строку каждой группы с помощью пакета dplyr в R. Для этого можно использовать следующий базовый синтаксис:
df %>% group_by (group_var) %>% arrange (values_var) %>% filter (row_number()== 1 )
В следующем примере показано, как использовать эту функцию на практике.
Пример: выберите первую строку по группе в R
Предположим, у нас есть следующий набор данных в 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
Следующий код показывает, как использовать пакет dplyr для выбора первой строки по группе в 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
По умолчанию аранжировка() сортирует значения в порядке возрастания, но мы можем легко отсортировать значения в порядке убывания:
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
Обратите внимание, что вы можете легко изменить этот код, чтобы выбрать n-ю строку в каждой группе. Просто измените row_number() == n .
Например, если вы хотите выбрать вторую строку по группе, вы можете использовать следующий синтаксис:
df %>% group_by (team) %>% arrange ( desc (dots)) %>% filter (row_number()== 2 )
Или вы можете использовать следующий синтаксис, чтобы выбрать последнюю строку по группе:
df %>% group_by (team) %>% arrange ( desc (dots)) %>% filter (row_number()== n() )
Дополнительные ресурсы
Как расположить линии в R
Как подсчитать наблюдения на группу в R
Как найти максимальное значение для группы в R