Comment réorganiser les niveaux de facteurs dans R (avec exemples)



Parfois, vous souhaiterez peut-être réorganiser les niveaux de certaines variables factorielles dans R. Heureusement, cela est facile à faire en utilisant la syntaxe suivante :

factor_variable <- factor(factor_variable, levels=c('this', 'that', 'those', ...))

L’exemple suivant montre comment utiliser cette fonction dans la pratique.

Exemple : Réorganiser les niveaux de facteurs dans R

Tout d’abord, créons un bloc de données avec une variable factorielle et une variable numérique :

#create data frame
df <- data.frame(region=factor(c('A', 'B', 'C', 'D', 'E')),
                 sales=c(12, 18, 21, 14, 34))

#view data frame
df

  region sales
1      A    12
2      B    18
3      C    21
4      D    14
5      E    34

Nous pouvons utiliser l’ argumentlevels() pour obtenir les niveaux actuels de la région de la variable factorielle :

#display factor levels for region
levels(df$region)

[1] "A" "B" "C" "D" "E"

Et nous pouvons utiliser la syntaxe suivante pour réorganiser les niveaux de facteurs :

#re-order factor levels for region
df$region <- factor(df$region, levels=c('A', 'E', 'D', 'C', 'B'))

#display factor levels for region
levels(df$region)

[1] "A" "E" "D" "C" "B"

Les niveaux de facteurs sont désormais dans l’ordre que nous avons spécifié à l’aide de l’argument niveaux .

Si nous voulons ensuite créer un barplot dans R et ordonner les barres en fonction des niveaux de facteurs de la région , nous pouvons utiliser la syntaxe suivante :

#re-order data frame based on factor levels for region
df <- df[order(levels(df$region)),]

#create barplot and place bars in order based on factor levels for region
barplot(df$sales, names=df$region)

Réorganiser les niveaux de facteurs pour le barplot dans R

Remarquez comment les barres sont dans l’ordre des niveaux de facteurs que nous avons spécifiés pour la région .


Vous pouvez trouver plus de didacticiels R sur cette page .

Ajouter un commentaire

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