Создайте новые переменные в 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