R 基础解决方案
您可以为此使用base 中的ifelse()。函数参数是ifelse(test, yes, no)。举个例子:
(x <- sample(c("a", "b", "c"), 5, replace = TRUE))
[1] "c" "a" "b" "a" "a"
ifelse(x == "a", "Apple", x)
[1] "c" "Apple" "b" "Apple" "Apple"
如果您想重新编码多个值,您可以像这样以嵌套方式使用该函数:
ifelse(x == "a", "Apple", ifelse(x == "b", "Banana", x))
[1] "c" "Apple" "Banana" "Apple" "Apple"
自带功能
有许多必须重新编码的值会使ifelse() 的编码变得混乱。因此,这里有一个自己的函数:
my_revalue <- function(x, ...){
reval <- list(...)
from <- names(reval)
to <- unlist(reval)
out <- eval(parse(text= paste0("{", paste0(paste0("x[x ==", "'", from,"'", "]", "<-", "'", to, "'"), collapse= ";"), ";x", "}")))
return(out)
}
现在我们可以非常快速地更改多个值:
my_revalue(vec= x, "a" = "Apple", "b" = "Banana", "c" = "Cranberry")
[1] "Cranberry" "Apple" "Banana" "Apple" "Apple"