Как использовать условный фильтр в dplyr


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

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

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

Связанный: введение в case_when() в dplyr

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

Пример: Как использовать условный фильтр в dplyr

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

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'),
                 points=c(10, 12, 17, 18, 24, 29, 29, 34, 35))

#view data frame
df

  team points
1 to 10
2 to 12
3 to 17
4 B 18
5 B 24
6 B 29
7 C 29
8 C 34
9 C 35

Теперь предположим, что мы хотим применить следующий условный фильтр:

  • Сохраняйте линии только для игроков команды А , чьи очки больше 15.
  • Сохраняйте линии только для игроков команды Б , набравших больше 20 очков.
  • Сохраняйте линии только для игроков команды C , набравших больше 30 очков.

Мы можем использовать функции filter() и case_when() из пакета dplyr , чтобы применить этот условный фильтр к фрейму данных:

 library (dplyr)

#filter data frame where points is greater than some value (based on team)
df %>% 
  filter(case_when(team==' A ' ~ points > 15,
                   team==' B ' ~ points > 20,
                   TRUE ~ points > 30))

  team points
1 to 17
2 B 24
3 B 29
4 C 34
5 C 35

Строки во фрейме данных теперь фильтруются, если значение в столбце «Точки» превышает определенное значение, в зависимости от значения в столбце «Команда» .

Примечание № 1. В функции case_when() мы используем TRUE в последнем аргументе для представления всех значений в столбце команды, которые не равны «A» или «B».

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

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

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

Как фильтровать по номеру строки с помощью dplyr
Как фильтровать по нескольким условиям с помощью dplyr
Как использовать фильтр «не включено» в dplyr

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

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