将数字向量简化为R中具有两个级别的因子

时间:2017-04-26 19:10:32

标签: r

假设我有一个' double'向量

c(-5,-5,-5,-5,1,2,-5,4,3)

我想将所有值设置为-5作为一个因素,将所有其他值设置为另一个因素,以便我可以使用以下内容:

[1] w w w w b b w b b
Levels: b w

我有办法做到这一点,但它不优雅,是否有任何推荐的方法进行此类转换?

2 个答案:

答案 0 :(得分:3)

我们可以用

来做到这一点
factor(c("w", "b")[(v1 >0)+1])
#[1] w w w w b b w b b
#Levels: b w

或使用ifelse

factor(ifelse(v1 > 0, "b", "w"))
#[1] w w w w b b w b b
#Levels: b w

数据

v1 <- c(-5,-5,-5,-5,1,2,-5,4,3)

答案 1 :(得分:3)

forcats包含很多用于处理因子的好函数。解决问题的一种方法是:

library(forcats)
v1 <- as.factor(c(-5,-5,-5,-5,1,2,-5,4,3))
fct_recode(fct_other(v1, keep = "-5", other_level = "b"), w = "-5")