Як вибрати перший рядок групою за допомогою 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
За замовчуванням arrange() сортує значення в порядку зростання, але ми можемо легко сортувати значення в порядку спадання:
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 .
Наприклад, якщо ви хочете вибрати 2-й рядок за групою, ви можете використовувати такий синтаксис:
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