我是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