使用dplyr时,是否有替代plyr的"重估"功能?

fma*_*ark 20 string r plyr dplyr

我是该revalue函数的粉丝,plyr用于替换字符串.它简单易记.

但是,我已经迁移了dplyr似乎没有revalue功能的新代码.dplyr做以前完成的事情可以接受的习惯是什么revalue

aos*_*ith 25

有一个recode开始可用功能dplyr版本dplyr_0.5.0看起来非常相似,revalueplyr.

recode文档示例部分构建的示例:

set.seed(16)
x = sample(c("a", "b", "c"), 10, replace = TRUE)
x
 [1] "a" "b" "a" "b" "b" "a" "c" "c" "c" "a"

recode(x, a = "Apple", b = "Bear", c = "Car")

   [1] "Car"   "Apple" "Bear"  "Apple" "Car"   "Apple" "Apple" "Car"   "Car"   "Apple"
Run Code Online (Sandbox Code Playgroud)

如果您只定义了一些要重新编码的值,则默认情况下会填充其余值NA.

recode(x, a = "Apple", c = "Car")
 [1] "Car"   "Apple" NA      "Apple" "Car"   "Apple" "Apple" "Car"   "Car"   "Apple"
Run Code Online (Sandbox Code Playgroud)

可以使用.default参数更改此行为.

recode(x, a = "Apple", c = "Car", .default = x)
 [1] "Car"   "Apple" "b"     "Apple" "Car"   "Apple" "Apple" "Car"   "Car"   "Apple"
Run Code Online (Sandbox Code Playgroud)

.missing如果您想用其他东西替换缺失值,还有一个参数.

  • 显然这是Hadley认可的答案:见https://twitter.com/hadleywickham/status/524614991719067648和https://github.com/hadley/dplyr/issues/631 (2认同)

akr*_*run 5

我们可以用chartrfrom来做到这一点base R

chartr("ac", "AC", x)
Run Code Online (Sandbox Code Playgroud)

数据

x <- c("a", "b", "c")
Run Code Online (Sandbox Code Playgroud)