Как выбрать первую строку по группе с помощью 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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *