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