Gestion des levels d'un facteur

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Jean-Emmanuel Longueville
Messages : 310
Enregistré le : 23 Fév 2011, 08:03

Gestion des levels d'un facteur

Messagepar Jean-Emmanuel Longueville » 12 Fév 2019, 12:28

Bonjour,
J'ai un facteur qui peut prendre au maximum ces quatres levels :

Code : Tout sélectionner

c("Tout à fait", "Plutôt oui", Plutôt non", "Pas du tout")


Pour un sous échantillon j'ai le résultat suivant pour la commande levels de ma var

Code : Tout sélectionner

levels(var) :
"Plutôt oui"  "Tout à fait" "Plutôt non"


Je pensais après quelques lecture faire quelques choses du style qui malheureusement ne fonctionne pas.

Code : Tout sélectionner

 levels(gdata$rep, ,  c("Pas du tout" = "Pas d'accord du tout", "Plutôt non" = "Plutôt pas d'accord", "Plutôt oui" = "Plutôt d'accord","Tout à fait" = "Tout à fait d'accord") )


Auriez vous une piste à me conseiller pour construire une variable facteur qui soit ordonnée et insensible au nombre d'élément d'entrée ?
Jean-Emmanuel
Ingénieur d'étude LNEC

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Gestion des levels d'un facteur

Messagepar Serge Rapenne » 12 Fév 2019, 14:01

Bonjour,

cf les arguments levels, label et orderred de la fonction factor

Code : Tout sélectionner

dta<-c("Tout à fait", "Plutôt oui", "Plutôt non", "Pas du tout")
>
> dta_factor<-factor(dta, ,levels= c("Pas du tout", "Plutôt non" , "Plutôt oui" ,"Tout à fait" ),label= c( "Pas d'accord du tout", "Plutôt pas d'accord","Plutôt d'accord","Tout à fait d'accord"),ordered=T)
> dta_factor
[1] Tout à fait d'accord Plutôt d'accord      Plutôt pas d'accord  Pas d'accord du tout
Levels: Pas d'accord du tout Plutôt pas d'accord Plutôt d'accord Tout à fait d'accord


tu peux ajouter plus de level et de label que présent dans dta
Serge

Jean-Emmanuel Longueville
Messages : 310
Enregistré le : 23 Fév 2011, 08:03

Re: Gestion des levels d'un facteur

Messagepar Jean-Emmanuel Longueville » 12 Fév 2019, 16:27

Merci pour ta commande qui fonctionne super bien.
Cependant, je ne comprends pas la présence de l'argument vide en deuxième position ? mais aussi comment se fait le liens entre les levels et les labels ?
Jean-Emmanuel
Ingénieur d'étude LNEC

Serge Rapenne
Messages : 1426
Enregistré le : 20 Aoû 2007, 15:17
Contact :

Re: Gestion des levels d'un facteur

Messagepar Serge Rapenne » 12 Fév 2019, 16:44

C'est une erreur, il fallait lire :

Code : Tout sélectionner

dta_factor<-factor(dta ,levels= c("Pas du tout", "Plutôt non" , "Plutôt oui" ,"Tout à fait" ),label= c( "Pas d'accord du tout", "Plutôt pas d'accord","Plutôt d'accord","Tout à fait d'accord"),ordered=T)


Serge

Jean-Emmanuel Longueville
Messages : 310
Enregistré le : 23 Fév 2011, 08:03

Re: Gestion des levels d'un facteur

Messagepar Jean-Emmanuel Longueville » 12 Fév 2019, 16:49

ce qui est bizare c'est qu'avec l'erreur la commande fonctionne sans elle n'accepte pas les arguments :

Code : Tout sélectionner

Error in levels(gdata$rep, levels = c("Pas du tout", "Plutôt non", "Plutôt oui",  :
  unused arguments (levels = c("Pas du tout", "Plutôt non", "Plutôt oui", "Tout à fait"), label = c("Pas d'accord du tout", "Plutôt pas d'accord", "Plutôt d'accord", "Tout à fait d'accord"), ordered = T)
Jean-Emmanuel
Ingénieur d'étude LNEC

Mickael Canouil
Messages : 1315
Enregistré le : 04 Avr 2011, 08:53
Contact :

Re: Gestion des levels d'un facteur

Messagepar Mickael Canouil » 13 Fév 2019, 08:44

Bonjour,

le code fourni est parfaitement fonctionnel:

Code : Tout sélectionner

dta <- c("Tout à fait", "Plutôt oui", "Plutôt non", "Pas du tout")

dta_factor <- factor(
  x = dta,
  levels = c("Pas du tout", "Plutôt non", "Plutôt oui", "Tout à fait"),
  label = c("Pas d'accord du tout", "Plutôt pas d'accord", "Plutôt d'accord", "Tout à fait d'accord"),
  ordered = TRUE
)

levels(dta_factor)
#> [1] "Pas d'accord du tout" "Plutôt pas d'accord"  "Plutôt d'accord"     
#> [4] "Tout à fait d'accord"


Vous devriez revoir (re)voir l'aide de la fonction ?levels et notamment les arguments que cette fonction peut prendre.
Puis aller voir l'aide de la fonction ?factor

Cordialement,
Mickaël
mickael.canouil.fr | rlille.fr

Eric Wajnberg
Messages : 776
Enregistré le : 11 Aoû 2008, 15:37
Contact :

Re: Gestion des levels d'un facteur

Messagepar Eric Wajnberg » 13 Fév 2019, 10:47

Au cas où ceci soit utile :

Code : Tout sélectionner

?relevel


Eric

Jean-Emmanuel Longueville
Messages : 310
Enregistré le : 23 Fév 2011, 08:03

Re: Gestion des levels d'un facteur

Messagepar Jean-Emmanuel Longueville » 13 Fév 2019, 11:55

Merci pour vos réponses je retourne creuser la doc en effet.
Jean-Emmanuel
Ingénieur d'étude LNEC


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot] et 1 invité