Comment recoder une variable numérique?
> library(car)
> df = data.frame(value=c('A', 'B', 'C', 'A'))
> foo = recode(df$value, "'A'=1; 'B'=2; 'C'=3;", as.numeric.result=TRUE)
> mean(foo)
[1] NA
Warning message:
In mean.default(foo) : argument is not numeric or logical: returning NA
> foo
[1] 1 2 3 1
Levels: 1 2 3
Ugh. Je pensais que le définition de l'as.numérique.résultat (par défaut à TRUE), est que si les résultats sont tous les chiffres, ils seraient forcés de numérique.
Comment puis-je obtenir les résultats de ce recodage être numériques?
OriginalL'auteur dfrankow | 2011-07-14
Vous devez vous connecter pour publier un commentaire.
Si vous regardez attentivement la documentation sur
recode
, vous verrez ceci:Vous devez spécifier
as.factor.result=FALSE
je pense:modifier
Puisque le défaut de
as.numeric.result
est VRAI, vous avez seulement besoin de spécifieras.factor.result=FALSE
, plutôt que de spécifier les deux.foo = recode(df$value, "' >A'=1; ' >B'=2; ' >C'=3;")
, veuillez noter > ou < la marque. Je suis aux prises avec ces deux marques. Je ne peux pas afficher une autre question, car il sera considéré comme dupliqué.OriginalL'auteur joran
Essayez d'utiliser
as.numeric
nouveauOriginalL'auteur Stedy
De
?recode
vous devriez noter ce qui est dit à propos de laas.numeric.result
argument:as.factor.result
par défautTRUE
de sorte que le résultat sera toujours un facteur, peu importe ce que vousas.numeric.result
. Pour obtenir le comportement souhaité, réglez les deuxas.factor.result = FALSE
etas.numeric.result = TRUE
:OriginalL'auteur Gavin Simpson