将dplyr中的字符重新编码为因子中的数字

时间:2016-11-16 01:47:14

标签: r dplyr recode

我熟悉recode V0.5中的dplyr。我错过了什么吗?似乎来自Recode的{​​{1}}更有效率。除非我做错了什么:

这有效:

car

但是当你有一个因素时却不是这样:

x <- c("a", "b", "c")
y <- dplyr::recode(x, a = 1, b = 2, c= 3)
y

好像你必须将它视为字符并使用recode_factor以便它回到因子

xf <- factor(c("a", "b", "c"))
yf<- dplyr::recode(xf, a = 1, b = 2, c= 3)
Error: `a` has type 'double' not 'character'

那会起作用但看起来很啰嗦???来自Dyf <- dplyr::recode_factor(as.character(xf), a = 1, b = 2, c= 3) Dyf 的{​​{1}}只会执行以下操作:

Recode

我遗失了什么?

感谢

1 个答案:

答案 0 :(得分:0)

看起来像dplyr的功能已得到增强,可以执行您想要的操作:

library(dplyr)
#> Warning: package 'dplyr' was built under R version 3.5.3
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union
xf <- factor(c("a", "b", "c"))
Eyf<- xf %>% dplyr::recode_factor(a = 1, b = 2, c= 3)
Eyf
#> [1] 1 2 3
#> Levels: 1 2 3
Fyf<- xf %>% dplyr::recode(a = 1, b = 2, c= 3) %>% factor()
Fyf
#> [1] 1 2 3
#> Levels: 1 2 3

reprex package(v0.3.0)于2019-08-28创建