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

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *