Dplyr: як використовувати mutate() із кількома умовами


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

 library (dplyr)

df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

Цей конкретний синтаксис створює новий стовпець під назвою клас , який приймає такі значення:

  • A_Добре, якщо команда дорівнює A, а очки більше або дорівнюють 20.
  • A_Погано , якщо команда дорівнює A і очок менше 20.
  • B_Добре, якщо команда дорівнює B, а очки більше або дорівнюють 20.
  • B_Погано , якщо не виконується жодна з попередніх умов.

У наступному прикладі показано, як використовувати цей синтаксис на практиці.

Пов’язане: як використовувати case_when() у dplyr

Приклад: використовуйте mutate() у dplyr із кількома умовами

Припустимо, у R є наступний кадр даних, який містить інформацію про різних баскетболістів:

 #create data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'A', 'B', 'B', 'B', 'B', 'B'),
                 points=c(22, 30, 34, 19, 14, 12, 39, 15, 22, 25))

#view data frame
df

   team points
1 to 22
2 to 30
3 to 34
4 to 19
5 to 14
6 B 12
7 B 39
8 B 15
9 B 22
10 B 25

Ми можемо використати такий синтаксис із функцією mutate() , щоб створити новий стовпець під назвою клас , значення якого базуються на значеннях у стовпцях team і points :

 library (dplyr)
#add new column based on values in team and points columns
df <- df%>% mutate(class = case_when((team == ' A ' & points >= 20) ~ ' A_Good ',
                                     (team == ' A ' & points < 20) ~ ' A_Bad ',
                                     (team == ' B ' & points >= 20) ~ ' B_Good ',
                                      TRUE ~ ' B_Bad '))

#view updated data frame
df

   team points class
1 A 22 A_Good
2 A 30 A_Good
3 A 34 A_Good
4 A 19 A_Bad
5 A 14 A_Bad
6 B 12 B_Bad
7 B 39 B_Good
8 B 15 B_Bad
9 B 22 B_Good
10 B 25 B_Good

  Новий стовпець класу приймає значення на основі значень у стовпцях команди та балів .

Наприклад, перший рядок мав значення A у стовпці team і значення балів більше або дорівнювало 20, тому він отримав значення A_Good у новому стовпці класу .

Зауважте, що в цьому прикладі ми використовували символ & як оператор «І», щоб перевірити, чи обидві умови істинні, перш ніж призначити значення в стовпці класу .

Однак ми могли б використати | символ як оператор «АБО», щоб натомість перевірити, чи виконано одну з двох умов перед присвоєнням значення в стовпці класу .

Додаткові ресурси

У наступних посібниках пояснюється, як виконувати інші типові завдання в dplyr:

dplyr: Як змінити змінну, якщо стовпець містить рядок
dplyr: Як змінити рівні факторів за допомогою mutate()
dplyr: Як використовувати функцію cross().

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

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