3

recodedplyrV0.5 开始熟悉。我错过了什么吗?似乎Recodefromcar更有效。除非我做错了什么:

这有效:

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

那行得通,但看起来很冗长???Recodefromcar会简单地做到这一点:

Cyf <- Recode(x, " 'a'=1; 'b'= 2; 'c' = 3 ")
Cyf  [1] 1 2 3
Levels: 1 2 3

我错过了什么?

谢谢

4

1 回答 1

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 包(v0.3.0)于 2019 年 8 月 28 日创建

于 2019-08-29T00:58:26.600 回答