Создайте новые переменные в R с помощью mutate() и case_when()


Часто вам может понадобиться создать новую переменную во фрейме данных в R на основе некоторого условия. К счастью, это легко сделать с помощью функций mutate() и case_when() из пакета dplyr .

В этом руководстве показано несколько примеров использования этих функций со следующим фреймом данных:

#create data frame
df <- data.frame(player = c('a', 'b', 'c', 'd', 'e'),
 position = c('G', 'F', 'F', 'G', 'G'),
 points = c(12, 15, 19, 22, 32),
 rebounds = c(5, 7, 7, 12, 11))

#view data frame
df

 player position points rebounds
1 a G 12 5
2 b F 15 7
3 c F 19 7
4 d G 22 12
5 e G 32 11

Пример 1: создание новой переменной на основе одной существующей переменной

В следующем коде показано, как создать новую переменную с именем 'scorer' на основе значения в столбце очков:

library(dplyr)

#define new variable 'scorer' using mutate() and case_when()
df %>%
 mutate (scorer = case_when (points < 15 ~ ' low',
 points < 25 ~ ' med',
 points < 35 ~ ' high'))

 player position points rebounds scorer
1 a G 12 5 low
2 b F 15 7 med
3 c F 19 7 med
4 d G 22 12 med
5 e G 32 11 high

Пример 2: создание новой переменной на основе нескольких существующих переменных

В следующем коде показано, как создать новую переменную с именем type на основе значения в столбце player и position:

library(dplyr)

#define new variable 'type' using mutate() and case_when()
df %>%
 mutate (type = case_when (player == 'a' | player == 'b' ~ ' starter',
 player == 'c' | player == 'd' ~ ' backup',
 position == 'G' ~ ' reserve'))

 player position points rebounds type
1 a G 12 5 starter
2 b F 15 7 starter
3 c F 19 7 backup
4 d G 22 12 backup
5 e G 32 11 reserve

В следующем коде показано, как создать новую переменную с именем «valueAdded» на основе значения в столбцах очков и подборов:

library(dplyr)

#define new variable 'valueAdded' using mutate() and case_when()
df %>%
 mutate (valueAdded = case_when (points <= 15 & rebounds <=5 ~ 2,
 points <=15 & rebounds > 5 ~ 4,
 points < 25 & rebounds < 8 ~ 6,
 points < 25 & rebounds > 8 ~ 7,
 points >=25 ~ 9))

 player position points rebounds valueAdded
1 a G 12 5 2
2 b F 15 7 4
3 c F 19 7 6
4 d G 22 12 7
5 e G 32 11 9

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

Как переименовать столбцы в R
Как удалить столбцы в R
Как фильтровать строки в R

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.