我是R新手,在使用ifelse()函数时会得到意想不到的结果。这是一个例子。以下是我正在使用的数据框的一个子集。在最后一条命令之后,为什么示例$ Points列包含12而不是2?我已经尝试过许多不同值的示例$ Value,结果总是比我预期的要多10个。R问题:ifelse产生意想不到的结果
例子:
example
Question StudentID SchoolID Value Worth Answer Points
2926 18 101290 84386 2 2 Co 0
2927 18 100878 84386 2 2 Co 0
2928 18 100895 84386 1 5 Co 0
2929 18 100913 84386 2 2 Co 0
2930 18 100884 84386 2 2 Co 0
example$Points <- ifelse(example$Answer == "Co", example$Value, example$Points)
example
Question StudentID SchoolID Value Worth Answer Points
2926 18 101290 84386 2 2 Co 12
2927 18 100878 84386 2 2 Co 12
2928 18 100895 84386 1 5 Co 11
2929 18 100913 84386 2 2 Co 12
2930 18 100884 84386 2 2 Co 12
我一直在使用的只是再从列减去10的变通,但我想避免这种情况,并获得这到底是怎么回事的底部。
任何帮助将不胜感激。谢谢!
你能提供`str(example)`或`dput(例如[2926:2930,])的输出吗? – 2011-01-18 21:16:37
你可以在干净的R会话中尝试一下吗?当我尝试你的代码时,我会得到期望的结果。因为这是一个R函数,所以不要调用数据框`example`;尝试一个不同的名字。你也可以简化代码以使用`within()`;如果我的数据在数据框“DF”中,则DF < - 内(DF,Points < - ifelse(Answer ==“Co”,Value,Points))`将与您的代码相同,而不必重复所有'DF $`位(在你的情况下是`exmaple $`)。 – 2011-01-18 21:19:24