Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to recode a variable to numeric?

Tags:

r

r-car

> 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. I thought the definition of as.numeric.result (default TRUE) was that if the results are all numerals, they would be coerced to numeric.

How do I get the results of this recoding to be numeric?

like image 309
dfrankow Avatar asked Dec 21 '22 11:12

dfrankow


1 Answers

If you look carefully at the documentation on recode you'll see this:

as.factor.result     return a factor; default is TRUE if var is a factor, FALSE otherwise.
as.numeric.result    if TRUE (the default), and as.factor.result is FALSE, 
                      then the result will be coerced to numeric if all values in the 
                      result are numerals—i.e., represent numbers.

So you need to specify as.factor.result=FALSE I think:

foo = recode(df$value, "'A'=1; 'B'=2; 'C'=3;", as.factor.result=FALSE)

edit Since the default of as.numeric.result is TRUE, you only need to specify as.factor.result=FALSE, rather than specifying both of them.

like image 125
joran Avatar answered Dec 24 '22 01:12

joran