Comment convertir plusieurs colonnes en facteur à l’aide de dplyr
Vous pouvez utiliser les méthodes suivantes pour convertir plusieurs colonnes en facteur à l’aide des fonctions du package dplyr :
Méthode 1 : convertir des colonnes spécifiques en facteur
library(dplyr) df %>% mutate_at(c('col1', 'col2'), as.factor)
Méthode 2 : convertir toutes les colonnes de caractères en facteur
library(dplyr) df %>% mutate_if(is.character, as.factor)
Les exemples suivants montrent comment utiliser chaque méthode dans la pratique.
Exemple 1 : convertir des colonnes spécifiques en facteur
Supposons que nous ayons le bloc de données suivant dans R :
#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'D'),
position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
starter=c('Y', 'Y', 'Y', 'N', 'N', 'Y', 'N', 'N'),
points=c(12, 24, 25, 35, 30, 14, 19, 11))
#view structure of data frame
str(df)
'data.frame': 8 obs. of 4 variables:
$ team : chr "A" "A" "A" "B" ...
$ position: chr "G" "G" "F" "F" ...
$ starter : chr "Y" "Y" "Y" "N" ...
$ points : num 12 24 25 35 30 14 19 11
Nous pouvons voir que les colonnes team , position et starter sont des caractères tandis que la colonne points est numérique.
Pour convertir uniquement les colonnes d’équipe et de position en facteurs, nous pouvons utiliser la syntaxe suivante :
library(dplyr) #convert team and position columns to factor df <- df %>% mutate_at(c('team', 'position'), as.factor) #view structure of updated data frame str(df) 'data.frame': 8 obs. of 4 variables: $ team : Factor w/ 4 levels "A","B","C","D": 1 1 1 2 2 3 3 4 $ position: Factor w/ 2 levels "F","G": 2 2 1 1 2 2 1 1 $ starter : chr "Y" "Y" "Y" "N" ... $ points : num 12 24 25 35 30 14 19 11
Nous pouvons voir que les colonnes équipe et position sont désormais toutes deux des facteurs.
Exemple 2 : convertir toutes les colonnes de caractères en facteur
Supposons que nous ayons le bloc de données suivant dans R :
#create data frame
df <- data.frame(team=c('A', 'A', 'A', 'B', 'B', 'C', 'C', 'D'),
position=c('G', 'G', 'F', 'F', 'G', 'G', 'F', 'F'),
starter=c('Y', 'Y', 'Y', 'N', 'N', 'Y', 'N', 'N'),
points=c(12, 24, 25, 35, 30, 14, 19, 11))
#view structure of data frame
str(df)
'data.frame': 8 obs. of 4 variables:
$ team : chr "A" "A" "A" "B" ...
$ position: chr "G" "G" "F" "F" ...
$ starter : chr "Y" "Y" "Y" "N" ...
$ points : num 12 24 25 35 30 14 19 11
Nous pouvons voir que trois des colonnes du bloc de données sont des colonnes de caractères.
Pour convertir toutes les colonnes de caractères en facteurs, nous pouvons utiliser la syntaxe suivante :
library(dplyr) #convert all character columns to factor df <- df %>% mutate_if(is.character, as.factor) #view structure of updated data frame str(df) 'data.frame': 8 obs. of 4 variables: $ team : Factor w/ 4 levels "A","B","C","D": 1 1 1 2 2 3 3 4 $ position: Factor w/ 2 levels "F","G": 2 2 1 1 2 2 1 1 $ starter : Factor w/ 2 levels "N","Y": 2 2 2 1 1 2 1 1 $ points : num 12 24 25 35 30 14 19 11
Nous pouvons voir que toutes les colonnes de caractères sont désormais des facteurs.
Remarque : Reportez-vous à la page de documentation dplyr pour une explication complète des fonctions mutate_at et mutate_if .
Ressources additionnelles
Les didacticiels suivants expliquent comment effectuer d’autres opérations courantes dans R :
Comment convertir plusieurs colonnes en numérique à l’aide de dplyr
Comment convertir un facteur en numérique dans R
Comment convertir une date en numérique dans R