【发布时间】:2017-03-30 02:20:07
【问题描述】:
我从dplyr V0.5 开始熟悉recode。我错过了什么吗?似乎来自car 的Recode 更有效。除非我做错了什么:
这行得通:
x <- c("a", "b", "c")
y <- dplyr::recode(x, a = 1, b = 2, c= 3)
y
但当你有一个因素时:
xf <- factor(c("a", "b", "c"))
yf<- dplyr::recode(xf, a = 1, b = 2, c= 3)
Error: `a` has type 'double' not 'character'
似乎您必须将其视为字符并使用 recode_factor 以便它回到因子
Dyf <- dplyr::recode_factor(as.character(xf), a = 1, b = 2, c= 3)
Dyf
这可行,但看起来很冗长???来自car 的Recode 只需使用:
Cyf <- Recode(x, " 'a'=1; 'b'= 2; 'c' = 3 ")
Cyf [1] 1 2 3
Levels: 1 2 3
我错过了什么?
谢谢
【问题讨论】:
-
最新的因子 dplyrish 工具是“forcats”:blog.rstudio.org/2016/08/31/forcats-0-1-0
-
是的,但我认为
forcats可以很好地处理字符,但它不会将字符更改为数字。 -
您可以在您的第一个
recode呼叫中将您的 1 等放在引号中:... a = "1", ... -
但这基本上会添加字符串数字,我想将它们实际转换为数字。