如何使用R中的mapvalues将多个数值设置为单个字符/分类?

时间:2016-03-15 15:58:45

标签: r

所以我通常使用mapvalues为文本设置一个数值,然后将其转换为一个因子,例如

  mydata$data<- mapvalues(mydata$columnheader, from = c("1", "0", "-1", "-3"), to = c("Yes", "No", "Dont know", "Prefer not to say"))
  mydata$data<- as.factor(mydata$data)         

但是,我已经到了一个点,我希望将几个值映射到单个值,即我希望将1,100和1000映射到&#34;是&#34;,0,000和0000到&#34;无&#34;等,而不是仅映射到单个字符串的单个值。是否有一种简单的方法可以在mapvalues中执行此操作,而不涉及使用多个嵌套的if语句?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我们可以使用recode包中的car,或只使用ifelse

# Define vector
vals <- c("1","100","1000","0","000","0000")

library(car)
recode(vals, 'c("1","100","1000") = "yes"; c("0","000","0000") = "no"')
#[1] "yes" "yes" "yes" "no"  "no"  "no" 

ifelse(vals %in% c("1","100","1000"), "yes",
       ifelse(vals %in% c("0","000","0000"), "no", NA))
#[1] "yes" "yes" "yes" "no"  "no"  "no" 
相关问题