2016-07-07 181 views
0

我有类似这样的数据:Ifelse语句中的R因素

X    Y 
45   45 
56   34 
Unspecified Unspecified 
Unspecified 23 

我想用一个ifelse语句来比较这些 - 让一个1,如果列X不等于列Y,和0除此以外。我一直在尝试这样的事情:

ifelse(data$X == data$Y, 0, 1) 

但没有得到任何好处。我能做什么?像往常一样,任何帮助将不胜感激。

+3

你是什么意思的“无济于事”? – Psidom

+4

在进行比较之前将您的列转换为字符。 – Psidom

+1

另请注意,'data'中的colnames以大写字母(X,Y)表示,而在'ifelse'中则以小写字母(x,y)表示。 –

回答

1

想通了这要归功于在某种程度上删除评论:

ifelse(as.character(data$X) == as.character(data$Y), 0, 1) 
2

无需使用ifelse,只是用逻辑运算符!=。考虑你的数据帧是df

> with(df, as.character(X)!=as.character(Y))*1 
[1] 0 1 0 1 
+0

我更喜欢显式转换,而不是'* 1'。 – zx8754