2012-12-12 89 views
2

不知道我在这里做错了什么,并希望得到任何帮助。c()故障?

试图让一个名为“控制”的新变量,并对其进行编码1当行变量等于这些数字,0时,它不是。

data$control= ifelse (data$row==c(146, 297, 313, 171, 262, 233, 292, 304, 264, 228, 279,  
281, 290, 277, 152, 161, 250, 263, 245, 83, 67, 101, 98, 251, 148, 155, 322, 265, 
159, 271, 278, 289, 274, 282, 158, 196, 154, 260, 163, 307, 272, 299, 300, 273, 167, 
286, 149, 316, 147, 162, 178), 1, 0) 

它创建一个名为“control”的新变量,但只对row = 149和row = 264编码为1。我真的不知道这一点。

感谢您的帮助, 克里斯

+0

什么C(146,297,313,171,262,233,292的一部分,304 ,264,228,279, 281,290,277,152,161,250,263,245,83,67,101,98,251,148,155,322,265, 159,271,278,289 ,274,282,158,196,154,260,163,307,272,299,300,273,167, ,286,149,316,147,162,178)是否是故障?你应该重新调整q以匹配它 – mdsumner

+2

只是一个常规故障排除提示:总是打破你的论点,以确保他们正在做你认为你正在做的事!做'data $ row == c(146,....)',你马上就会知道它不是你想要的。 –

回答

11

你打算用%in%而非==

data$control= ifelse (data$row %in% c(146, 297, 313, 171, 262, 233, 292, 304, 264, 228, 279, 281, 290, 277, 152, 161, 250, 263, 245, 83, 67, 101, 98, 251, 148, 155, 322, 265, 159, 271, 278, 289, 274, 282, 158, 196, 154, 260, 163, 307, 272, 299, 300, 273, 167, 286, 149, 316, 147, 162, 178), 1, 0) 
+0

可以使用'as.integer(logical_expression)'来代替'ifelse(logical_expression,1,0)'。 –

+0

@MatthewLundberg:或'logical_expression + 0' :) –