Comment convertir un numérique en facteur dans R (avec des exemples)



Il existe deux méthodes que vous pouvez utiliser pour convertir une variable numérique en variable factorielle dans R :

Méthode 1 : utiliser as.factor()

df$factor_variable <- as.factor(df$numeric_variable)

Cela convertira la variable numérique en variable factorielle avec un nombre de niveaux égal au nombre de valeurs uniques dans la variable numérique d’origine.

Méthode 2 : utilisez cut()

df$factor_variable <- cut(df$numeric_variable, 3, labels=c('lab1', 'lab2', 'lab3'))

Cet exemple particulier convertira la variable numérique en variable factorielle en « coupant » la variable numérique en 3 valeurs également espacées.

Les exemples suivants montrent comment utiliser chaque méthode en pratique avec le bloc de données suivant dans R :

#create data frame
df <- data.frame(team=c('A', 'A', 'B', 'B', 'C', 'C', 'C', 'D'),
                 points=c(12, 15, 22, 29, 35, 24, 11, 24))

#view data frame
df

  team points
1    A     12
2    A     15
3    B     22
4    B     29
5    C     35
6    C     24
7    C     11
8    D     24

#view structure of data frame
str(df)

'data.frame':	8 obs. of  2 variables:
 $ team  : chr  "A" "A" "B" "B" ...
 $ points: num  12 15 22 29 35 24 11 24

Exemple 1 : convertir un numérique en facteur à l’aide de as.factor()

Le code suivant montre comment utiliser as.factor() pour convertir la colonne de points de numérique en facteur :

#convert points column from numeric to factor
df$points <- as.factor(df$points)

#view updated data frame
df

  team points
1    A     12
2    A     15
3    B     22
4    B     29
5    C     35
6    C     24
7    C     11
8    D     24

#view updated structure of data frame
str(df)

'data.frame':	8 obs. of  2 variables:
 $ team  : chr  "A" "A" "B" "B" ...
 $ points: Factor w/ 7 levels "11","12","15",..: 2 3 4 6 7 5 1 5

En utilisant la fonction str() pour visualiser la structure du bloc de données, nous pouvons voir que la colonne de points est désormais un facteur avec 7 niveaux différents représentant les 7 valeurs numériques uniques dans la colonne.

Exemple 2 : convertir un numérique en facteur à l’aide de cut()

Le code suivant montre comment utiliser cut() pour convertir la colonne de points d’une variable numérique en une variable factorielle à 3 niveaux :

#convert points column from numeric to factor with three levels
df$points <- cut(df$points, 3, labels=c('OK', 'Good', 'Great'))

#view updated data frame
df

  team points
1    A     OK
2    A     OK
3    B   Good
4    B  Great
5    C  Great
6    C   Good
7    C     OK
8    D   Good

#view updated structure of data frame
str(df)

'data.frame':	8 obs. of  2 variables:
 $ team  : chr  "A" "A" "B" "B" ...
 $ points: Factor w/ 3 levels "OK","Good","Great": 1 1 2 3 3 2 1 2

À partir du résultat, nous pouvons voir que la variable de points a été convertie d’une variable numérique en une variable factorielle à trois niveaux et les étiquettes suivantes :

  • « D’ACCORD »
  • « Bien »
  • « Super »

Notez que nous avons choisi d’utiliser trois niveaux dans cet exemple, mais n’hésitez pas à découper la variable numérique en autant de niveaux que vous le souhaitez en remplaçant le 3 dans la fonction cut() par une autre valeur.

Ressources additionnelles

Les didacticiels suivants expliquent comment effectuer d’autres tâches courantes dans R :

Comment convertir un numérique en caractère dans R
Comment convertir un facteur en numérique dans R
Comment convertir un facteur en caractère dans R

Ajouter un commentaire

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