R - 使用If语句比较不同级别的因子

时间:2017-05-08 19:23:31

标签: r

我想比较我的数据集中的两列,但它们有不同的级别。我似乎无法找到一种方法让这个工作。有什么建议吗?

示例:

x = c('a','b','c')
y = c('a','b','g')
z = data.frame(x,y)

if(z$x == z$y){1} else{0}

返回:Ops.factor中的错误(z $ x,z $ y):级别因子集不同

我试图使它们具有相似的水平,即:

z$x <- factor(z$x, levels=c(levels(z$y),levels(z$x)))
z$y <- factor(z$y, levels=c(levels(z$y),levels(z$x)))

但它仍然会返回错误。

我也使用了is.same()

2 个答案:

答案 0 :(得分:2)

您可以将它们转换为字符进行比较。但是,如果要比较您可能想要使用的所有行ifelse

ifelse(as.character(z$x) == as.character(z$y), 1, 0)

答案 1 :(得分:0)

我们可以使用as.integer

将逻辑转换为二进制
with(z, as.integer(levels(x)[x] == levels(y)[y]))