2016-09-25 75 views
-1

我一直在寻找一个替代矢量的特定值的函数。例如,你有包括值ABCDNA一个特征向量,并希望与ENAF更换A如何替换R中矢量的特定值?

我试着写一个函数,并提出了下面。它似乎工作正常,但有问题,包括它将因素转换为字符。

recode <- function(x, old, new) { 
    u <- rep(NA, length(x)) 
    for (i in 1:length(old)) { 
        if(is.na(old[i])) { 
            u[is.na(x)] <- new[i] 
        } else { 
        u[x == old[i]] <- new[i] 
        } 
    } 
    return(ifelse(x %in% old, u, x)) 
} 

例如:

a <- sample(c("A", "B", "C", "D", NA), 20, replace = T) 
recode(a, old = c("A", NA), new = c("E", "F")) 

或许已经存在,做这样的功能,我只是还没有找到它!还是有人知道一个明智的方法来做到这一点?

回答

1

我建议您在dplyr的较新版本中使用dplyr::recode

library(dplyr) 

a <- sample(c("A", "B", "C", "D", NA), 20, replace = T) 
recode(a, A = "E", .missing = "F") 

注意,也有dplyr::recode_factor,其中有一对夫妇的特定因子的功能(维持秩序)。

+0

谢谢迈克尔 - 这正是我正在寻找的。 –