【问题标题】:R - Using If statement to compare factors with different levelsR - 使用 If 语句比较不同水平的因素
【发布时间】:2017-05-08 19:23:30
【问题描述】:

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

例子:

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()

【问题讨论】:

  • 你可以使用as.character

标签: r


【解决方案1】:

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

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

【讨论】:

  • 带有 as.character 的 ifelse 非常适合我的需要。谢谢!
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2022-11-16
    • 2010-09-13
    相关资源
    最近更新 更多