Як вибрати перший рядок групою за допомогою 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

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *