2017-05-08 60 views
1

我想比較我數據集中的兩列,但它們具有不同的級別。我似乎無法找到一種方法來實現這一目標。有什麼建議麼?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

回答

2

您可以將它們轉換爲字符進行比較。但是,如果你想比較所有你可能需要使用ifelse行:

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

與as.character ifelse工作完美的我所需要的。謝謝! – Ghilborn

0

我們可以通過使用as.integer

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