Часто вам может понадобиться выбрать первую строку в каждой группе с помощью пакета 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 A 4
2 A 9
3 A 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 A 4
2 C 4
3 B 6
По умолчанию упорядочить() сортирует значения в порядке возрастания, но вместо этого мы можем легко отсортировать значения в порядке убывания:
df %>%
group_by(team) %>%
arrange ( desc (points)) %>%
filter (row_number()== 1 )
# A tibble: 3 x 2
# Groups: team [3]
team points
1 C 17
2 B 13
3 A 9
Обратите внимание, что вы можете легко изменить этот код, чтобы выбрать n -ю строку для каждой группы. Просто измените row_number() == n .
Например, если вы хотите выбрать вторую строку по группе, вы можете использовать следующий синтаксис:
df %>%
group_by(team) %>%
arrange ( desc (points)) %>%
filter (row_number()== 2 )
Или вы можете использовать следующий синтаксис для выбора последней строки по группе:
df %>%
group_by(team) %>%
arrange ( desc (points)) %>%
filter (row_number()== n() )
Дополнительные ресурсы
Как расположить строки в R
Как подсчитать наблюдения по группе в R
Как найти максимальное значение по группе в R