Як використовувати case_when() у dplyr
Функцію case_when() із пакета dplyr у R можна використовувати для створення нових змінних із існуючих змінних.
Ця функція використовує такий базовий синтаксис:
library (dplyr) df %>% mutate (new_var = case_when (var1 < 15 ~ ' low ', var2 < 25 ~ ' med ', TRUE ~ ' high '))
Зауважте, що TRUE еквівалентно оператору «else».
У наведених нижче прикладах показано, як використовувати цю функцію на практиці з таким кадром даних:
#create data frame df <- data. frame (player = c('AJ', 'Bob', 'Chad', 'Dan', 'Eric', 'Frank'), position = c('G', 'F', 'F', 'G', 'C', NA), points = c(12, 15, 19, 22, 32, NA), assists = c(5, 7, 7, 12, 11, NA)) #view data frame df player position points assists 1 AJ G 12 5 2 Bob F 15 7 3 Chad F 19 7 4 Dan G 22 12 5 Eric C 32 11 6 Frank NA NA NA
Приклад 1: Створення нової змінної з наявної змінної
Наступний код показує, як створити нову змінну під назвою якість , значення якої отримуються зі стовпця балів :
df %>% mutate (quality = case_when (points > 20 ~ ' high ', points > 15 ~ ' med ', TRUE ~ ' low ' )) player position points assists quality 1 AJ G 12 5 low 2 Bob F 15 7 low 3 Chad F 19 7 med 4 Dan G 22 12 high 5 Eric C 32 11 high 6 Frank NA NA NA low
Ось як саме функція case_when() створила значення для нового стовпця:
- Якщо значення в стовпці балів перевищує 20, то значення в стовпці якості є «високим».
- В іншому випадку, якщо значення в стовпці балів більше 15, значення в стовпці якості буде «середнім».
- В іншому випадку, якщо значення в стовпці балів менше або дорівнює 15 (або відсутнє значення, наприклад NA), тоді значення в стовпці якості є “низьким”.
Приклад 2: Створення нової змінної з кількох змінних
У наведеному нижче коді показано, як створити нову змінну під назвою якість , значення якої отримуються з балів і допоміжних стовпців:
df %>% mutate (quality = case_when (points > 15 & assists > 10 ~ ' great ', points > 15 & assists > 5 ~ ' good ', TRUE ~ ' average ' )) player position points assists quality 1 AJ G 12 5 average 2 Bob F 15 7 average 3 Chad F 19 7 good 4 Dan G 22 12 great 5 Eric C 32 11 great 6 Frank NA NA NA average
Зверніть увагу, що ми також можемо використовувати функцію is.na() для явного призначення рядків значенням NA:
df %>% mutate (quality = case_when (is. na (points) ~ ' missing ', points > 15 & assists > 10 ~ ' great ', points > 15 & assists > 5 ~ ' good ', TRUE ~ ' average ' )) player position points assists quality 1 AJ G 12 5 average 2 Bob F 15 7 average 3 Chad F 19 7 good 4 Dan G 22 12 great 5 Eric C 32 11 great 6 Frank NA NA NA missing
Додаткові ресурси
Як розташувати рядки в R
Як підрахувати спостереження за групою в R
Як відфільтрувати рядки, що містять певний рядок у R