Як використовувати умовний фільтр у 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.
  • Зберігайте лінії лише для гравців команди B , у яких кількість очок перевищує 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

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

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