R - 使用 If 语句比较不同水平的因子

  • 本文关键字:水平 比较 使用 If 语句 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()

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

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

我们可以通过使用 as.integer 将逻辑转换为二进制

with(z, as.integer(levels(x)[x] == levels(y)[y]))

最新更新