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

+0

逻辑到二进制转换,则很可能使用'作为。 character'。 – lmo

您可以将它们转换为字符进行比较。但是,如果你想比较所有你可能需要使用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]))