Bonjour,
Je voudrais recoder une variable "death" qui est en yes/no pour la mettre en 1 ou 0.
Merci...
Bonjour,
Je voudrais recoder une variable "death" qui est en yes/no pour la mettre en 1 ou 0.
Merci...
Bonjour,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 > a <- c("no", "yes", "no") > as.numeric(as.character(factor(a, levels=c("yes", "no"), labels=c(1,0)))) [1] 0 1 0
Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)
Une solution vous convient ? N'oubliez pas le tag
)><))))°>
Bonjour,
Bizarrement, quand je fais sapply, je vois que la variable "death" est déjà en numérique, alors que quand je fix la dataframe "epid" , les valeurs affichées pour la variable "death" sont bien "yes" ou "no".
Merci de votre aide.
Ça peut paraître bizarre mais c'est en fait normal. Cette dualité, c'est le côté schizophrène des objets de classe factor ! Exemple :
C'est d'ailleurs un comportement qui est très dangereux lorsque les labels sont des chiffres... ils ne correspondent pas forcément aux valeurs numériques des levels correspondant. Ce qui peut changer totalement les résultats sans pour autant générer d'erreur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 > b <- factor(c("no", "yes", "no")) > b [1] no yes no Levels: no yes > mode(b) [1] "numeric" > class(b) [1] "factor"
Pour reprendre mon exemple d'hier
as.character va permettre "d'extraire" les labels, sinon les valeurs numériques sont utilisées de façon implicite.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 > a <- c("no", "yes", "no") > factor(a, levels=c("yes", "no"), labels=c(1,0)) [1] 0 1 0 Levels: 1 0 > as.numeric(as.character(factor(a, levels=c("yes", "no"), labels=c(1,0)))) [1] 0 1 0 > as.numeric(factor(a, levels=c("yes", "no"), labels=c(1,0))) [1] 2 1 2
Forum LaTeX : pour des réponses rapides et appropriées, pensez à poster un
ECM = Exemple (reproduit le problème) Complet (document compilable) Minimal (ne postez pas votre thèse !)
Une solution vous convient ? N'oubliez pas le tag
)><))))°>
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager