How to recode a variable to numeric?

别等时光非礼了梦想. 提交于 2019-12-03 16:57:21

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.

Try using as.numeric again

> bar <- as.numeric(foo)
> bar
[1] 1 2 3 1
> str(bar)
 num [1:4] 1 2 3 1

From ?recode you should note what is said about the as.numeric.result argument:

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.

as.factor.result defaults to TRUE so the result will always be a factor, regardless of what you set as.numeric.result to. To get the desired behaviour, set both as.factor.result = FALSE and as.numeric.result = TRUE:

> recode(df$value, "'A'=1; 'B'=2; 'C'=3;", as.numeric.result=TRUE, 
         as.factor.result = FALSE)
[1] 1 2 3 1
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!