下面我有代码合并两个数据帧并分配值3和-1,
candidate_score<-merge(check7,anskey,by='Question.ID')
candidate_score$correct <- candidate_score$Selected.Option.ID == candidate_score$Correct.Option.ID
candidate_score$score <-
ifelse(candidate_score$correct== TRUE, 3,
ifelse(candidate_score$correct== FALSE, -1, ifelse(candidate_score$Correct.Option.ID == Full Marks ,3,NA)))
我有学生数据,当根据candidate_score$score
数据框分配标记3,-1时,标记3下面显示的标记3未根据我的{{correct.option.id
列分配给标记1}}代码如何实现我想要的输出?
我想在correct.option.id有完整标记的地方分配3个标记。
答案 0 :(得分:0)
第二个ifelse
有4个参数。您需要确定该条件的结果是-1还是NA。无法从所提供的材料中确定您的意图。最好的是样本数据帧或向量和一些描述。
如果在逗号和环绕赋值运算符之后插入空格,则通常更容易找到错误。我试图以更有条理的方式编辑代码。
回应澄清请求......这是第二次ifelse
调用::
ifelse(candidate_score$correct== FALSE, # arg 1 (the condition)
-1 , # arg 2 (the consequent)
NA, # arg 3 (should be the alternative)
# and the following fourth argument causes an error.
ifelse(candidate_score$Correct.Option.ID == Full Marks ,3,NA))
还不完全清楚要应用的逻辑测试,但也许你想要这个:
candidate_score$score <-
ifelse(candidate_score$correct== TRUE | candidate_score$Correct.Option.ID == 'Full Marks',
3,
ifelse( candidate_score$correct== FALSE, -1,,NA))
您还应该意识到不需要==TRUE
部分,因为TRUE
与TRUE==TRUE
具有相同的值,而FALSE与FALSE==TRUE
具有相同的值,< / p>