Créez de nouvelles variables dans R avec mutate() et case_when()
Souvent, vous souhaiterez peut-être créer une nouvelle variable dans un bloc de données dans R en fonction de certaines conditions. Heureusement, cela est facile à faire en utilisant les fonctions mutate() et case_when() du package dplyr .
Ce didacticiel montre plusieurs exemples d’utilisation de ces fonctions avec le bloc de données suivant :
#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
Exemple 1 : Créer une nouvelle variable basée sur une variable existante
Le code suivant montre comment créer une nouvelle variable appelée « scoreur » en fonction de la valeur dans la colonne des points :
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
Exemple 2 : Créer une nouvelle variable basée sur plusieurs variables existantes
Le code suivant montre comment créer une nouvelle variable appelée « type » en fonction de la valeur dans la colonne joueur et 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
Le code suivant montre comment créer une nouvelle variable appelée « valueAdded » en fonction de la valeur des colonnes de points et de rebonds :
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
Ressources additionnelles
Comment renommer des colonnes dans R
Comment supprimer des colonnes dans R
Comment filtrer les lignes dans R