Fusionner deux modalités d'un factor

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

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

Fusionner deux modalités d'un factor

Messagepar Christophe Genolini » 14 Mar 2017, 08:49

Bonjour a tous,

J'ai pas fait de R pendant 2 ans et j'ai l'impression d'avoir tout perdu...
:-(
Problème du jour, j'ai un factor dont je voudrais fusionner certaines modalités. Je voudrais fusionner "F" et "Fem" ; "H", "Hom" et "HOM". Comment faire ?

Code : Tout sélectionner

dn <-  data.frame(id=1:7,sexe=c("Fem","Fem","FEM","Hom","Hom","H","HOM"))


Merci
Christophe
--
Christophe
https://rplusplus.com

Fred Santos
Messages : 233
Enregistré le : 11 Avr 2009, 10:00
Contact :

Re: Fusionner deux modalités d'un factor

Messagepar Fred Santos » 14 Mar 2017, 09:13

Bonjour,

Ah ça, R pardonne difficilement d'être abandonné ;-)

Une solution simple : redéfinir les niveaux à l'aide de la fonction levels.

Code : Tout sélectionner

> levels(dn$sexe)
[1] "Fem" "FEM" "H"   "Hom" "HOM"

> levels(dn$sexe) <- factor(c("F", "F", "H", "H", "H"))

> levels(dn$sexe)
[1] "F" "H"

Christophe Genolini
Messages : 698
Enregistré le : 12 Juin 2006, 21:37
Contact :

Re: Fusionner deux modalités d'un factor

Messagepar Christophe Genolini » 14 Mar 2017, 09:28

Argh. J'avais essayé la même chose, mais *dans* la fonction factor :

Code : Tout sélectionner

 
 dn$sexe <- factor(dn$sexe, levels=c("F","F","H","H","H"))
 

ca ne marchait pas.
Merci pour ta solution !

Christophe
--
Christophe
https://rplusplus.com

Paul Valentine
Messages : 4
Enregistré le : 30 Jan 2017, 09:53

Re: Fusionner deux modalités d'un factor

Messagepar Paul Valentine » 14 Mar 2017, 09:32

Bonjour,

Voici une autre solution en passant la variable en caractère et en gardant seulement les premières lettres de chaque modalités avec la fonction substr()

Code : Tout sélectionner

> dn$sexe<-as.character(dn$sexe)
> dn$sexe<-substr(dn$sexe,start=1,stop=1)
> dn$sexe<-as.factor(dn$sexe)
> levels(dn$sexe)
[1] "F" "H"

Logez Maxime
Messages : 3138
Enregistré le : 26 Sep 2006, 11:35

Re: Fusionner deux modalités d'un factor

Messagepar Logez Maxime » 14 Mar 2017, 09:38

Bonjour,

pour définir les levels il n'est pas nécessaire de faire appel à la fonction factor :

Code : Tout sélectionner

levels(dn$sexe) <- c("F", "F", "H", "H", "H")
Cordialement,
Maxime

Fred Santos
Messages : 233
Enregistré le : 11 Avr 2009, 10:00
Contact :

Re: Fusionner deux modalités d'un factor

Messagepar Fred Santos » 14 Mar 2017, 10:01

Christophe Genolini a écrit :Argh. J'avais essayé la même chose, mais *dans* la fonction factor :

Code : Tout sélectionner

 
 dn$sexe <- factor(dn$sexe, levels=c("F","F","H","H","H"))
 

ca ne marchait pas.

Je crois (j'espère que quelqu'un confirmera) que l'emploi de l'argument levels à l'intérieur de la fonction factor ne permet que de réordonner différemment des niveaux déjà existants, pas d'en spécifier de nouveaux. C'est la différence avec la fonction levels, qui permet quant à elle de modifier les niveaux.

F.


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité