【发布时间】:2011-01-18 21:04:00
【问题描述】:
我是 R 新手,在使用 ifelse() 函数时得到了意想不到的结果。这是一个例子。下面是我正在使用的数据框的一个子集。在最后一条命令之后,为什么 example$Points 列包含 12 而不是 2?我已经尝试了许多不同的 example$Value 值,结果总是比我预期的多 10。
例子:
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(example[2926:2930,])的输出? -
你能在干净的 R 会话中尝试吗?当我尝试你的代码时,我得到了想要的结果。不要调用数据框
example,因为那是一个 R 函数;尝试不同的名称。您还可以简化代码以使用within();如果我在数据帧DF中有您的数据,DF <- within(DF, Points <- ifelse(Answer == "Co", Value, Points))将执行与您的代码相同的操作,而无需重复所有DF$位(在您的情况下为exmaple$)。
标签: r if-statement dataframe