Как группировать и фильтровать данные с помощью dplyr


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

 df %>%
  group_by(team) %>%
  filter(any(points = = 10 ))

Этот конкретный синтаксис группирует кадр данных по столбцу, называемому командой , и фильтрует только те группы, где хотя бы одно значение в столбце точек равно 10.

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: группировка и фильтрация данных с помощью dplyr

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

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 15, 8, 4, 10, 10, 12, 12, 7))

#view data frame
df

  team points
1 to 10
2 to 15
3 to 8
4 B 4
5 B 10
6 B 10
7 C 12
8 C 12
9 C 7

Мы можем использовать следующий код, чтобы сгруппировать фрейм данных по значению в столбце «Команда» , а затем отфильтровать все группы, у которых нет хотя бы одного значения в столбце «Очки» , равного 10:

 library (dplyr)

#group by team and filter out teams where no points value is equal to 10
df %>%
  group_by(team) %>%
  filter(any(points == 10 ))

# A tibble: 6 x 2
# Groups: team [2]
  team points
    
1 to 10
2 to 15
3 to 8
4 B 4
5 B 10
6 B 10

Обратите внимание, что все строки, где команда равна «C», фильтруются, поскольку в столбце очков для команды «C» нет значения, равного 10.

Обратите внимание, что это всего лишь пример фильтра, который мы можем применить.

Например, мы могли бы применить другой фильтр, в котором мы отфильтровываем команды, у которых хотя бы одно значение в столбце очков больше 13:

 library (dplyr)

#group by team and filter out teams where no points value is greater than 13
df %>%
  group_by(team) %>%
  filter(any(points > 13 ))

# A tibble: 3 x 2
# Groups: team [1]
  team points
    
1 to 10
2 to 15
3 to 8

Обратите внимание, что сохраняются только строки, в которых команда равна «А», поскольку это единственная команда, у которой хотя бы одно количество очков превышает 13.

Примечание . Полную документацию по функции фильтра в dplyr можно найти здесь .

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

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

Как выбрать первую строку по группе с помощью dplyr
Как фильтровать по нескольким условиям с помощью dplyr
Как фильтровать строки, содержащие определенную строку, с помощью dplyr

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

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