将2级因子转换为TRUE / FALSE

时间:2018-09-22 19:38:19

标签: r r-factor

我必须将此类转换为True和False

Class          : Factor w/ 2 levels "benign","malignant": 1 1 1 1 1 2 1 1 1 1 

我已经尝试过通过

将其转换为数字
as.numeric(BreastCancer$Class)
as.integer(BreastCancer$Class)

然后我做了

as.logical(BreastCancer$Class)

但我只得到NA。

我尝试使用安装软件包dplyr进行编码,但是我不知道它是如何工作的。

2 个答案:

答案 0 :(得分:1)

重要的是要跟踪您正在编码为TRUEFALSE的内容:

vec_factor <- factor(
  c(1, 1, 1, 1, 1, 2, 1, 1, 1, 1), 
  labels = c("benign", "malignant")
)
str(vec_factor)
# Factor w/ 2 levels "benign","malignant": 1 1 1 1 1 2 1 1 1 1

vec_logical <- as.logical(as.integer(vec) == 1)
str(vec_logical)
# logi [1:10] TRUE TRUE TRUE TRUE TRUE FALSE ...

更新

正如@ zx8754所评论的,as.logical是多余的:

str(as.integer(vec) == 1)
# logi [1:10] TRUE TRUE TRUE TRUE TRUE FALSE ...

和@李哲源的答案要优雅得多。

答案 1 :(得分:0)

也许很简单:

BreastCancer$ClassLogical <- BreastCancer$Class == "benign"