Как выбрать первые n значений по группе в r


Вы можете использовать любой из следующих методов, чтобы выбрать первые N значений по группам в R:

Способ 1: выберите первые N значений для каждой группы (игнорируйте связи)

 library (dplyr)

#select top 5 values by group
df %>% 
  arrange(desc(values_column)) %>% 
  group_by(group_column) %>%
  slice(1:5)

Способ 2: выбрать первые N значений по группе (включая связи)

 library (dplyr)

#select top 5 values by group
df %>%
  group_by(group_column) %>%
  top_n(5, values_column)

В следующих примерах показано, как использовать каждый метод со следующим фреймом данных в R:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(19, 22, 15, NA, 14, 25, 25, 25),
                 rebounds=c(10, 6, 3, 7, 11, 13, 9, 12))

#view data frame
df

  team points rebounds
1 A 19 10
2 to 22 6
3 to 15 3
4 A NA 7
5 B 14 11
6 B 25 13
7 B 25 9
8 B 25 12

Пример 1: выберите первые N значений для каждой группы (игнорируйте связи)

Следующий код показывает, как выбрать первые две строки с максимальными значениями баллов, сгруппированные по командам:

 library (dplyr)

#select top 2 rows with highest points values, grouped by team 
df %>% 
  arrange(desc(points)) %>% 
  group_by(team) %>%
  slice(1:2)

# A tibble: 4 x 3
# Groups: team [2]
  team points rebounds
        
1 to 22 6
2 A 19 10
3 B 25 13
4 B 25 9

Результат содержит две строки с максимальными значениями баллов для каждой команды.

Обратите внимание, что для команды B на самом деле было три строки, которые соответствовали наивысшему значению ( 25 ), но в выходных данных возвращаются только две строки.

Этот метод просто игнорирует ссылки.

Пример 2: выберите первые N значений для каждой группы (включая связи)

Следующий код показывает, как выбрать первые две строки с максимальными значениями баллов, сгруппированные по командам:

 library (dplyr)

#select top 2 rows with highest points values, grouped by team 
df %>%
  group_by(team) %>%
  top_n(2, dots)

# A tibble: 5 x 3
# Groups: team [2]
  team points rebounds
        
1 A 19 10
2 to 22 6
3 B 25 13
4 B 25 9
5 B 25 12

Результат содержит две строки с максимальными значениями баллов для каждой команды.

Обратите внимание, что для команды B три линии были равны по наивысшему значению ( 25 ), поэтому этот метод включил эти три линии в окончательный результат.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные операции в R:

Как выбрать строки, в которых значение отображается в любом столбце в R
Как выбрать определенные столбцы в R
Как выбрать столбцы по индексу в R

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

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