R - 使用If语句比较不同级别的因素
问题描述:
我想比较我数据集中的两列,但它们具有不同的级别。我似乎无法找到一种方法来实现这一目标。有什么建议么?R - 使用If语句比较不同级别的因素
例子:
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)
+0
与as.character ifelse工作完美的我所需要的。谢谢! – Ghilborn
答
我们可以通过使用as.integer
with(z, as.integer(levels(x)[x] == levels(y)[y]))
逻辑到二进制转换,则很可能使用'作为。 character'。 – lmo