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().