我很擅长使用R而且我真的很挣以下 - 任何帮助都会感激不尽。
我需要计算考试和课程作业(x& y)的总分,并需要使用R中的逻辑运算符来根据以下标准计算出来。
If exam mark is >=50 then the final mark is 0.2x * 0.7y
If exam mark is <50 > 70 then the final mark is y+10
If exam mark is <50 <70 then the final mark is R.
我的问题是我需要将上面的所有3个条件放在R中的一个字符串中,这样无论x和y值是什么,我创建的'program'都会给出相应的最终标记。
我已经尝试了很多方法来做这件事,但R每次都只是错误。我很肯定这是一个编码错误(用户错误),但尽管谷歌搜索;通过参考书进行拖网我无法让它发挥作用。
我认为问题是我理解逻辑运算符是如何工作的 - 而不是如果逻辑运算符给出TRUE以及如何将它放在一个程序中如何获得正确的最终标记公式
我最近的尝试如下:
finalmark <- ((y>=50) <- (0.2*x+0.8*y)) |((y<=50 & x>70) <- (y+10)) |((y<=50 & x<70) <- (y))
我一直试图在过去4天内做到这一点 - 所以如果有人能帮助我或指出我正确的方向,我将非常感激!
答案 0 :(得分:2)
finalmark <-
# test if a condition is true..
ifelse(
# here's the condition..
y >= 50 ,
# ..and if it is, set `finalmark` equal to this.
0.2 * x * 0.7 * y ,
# ..otherwise, if the condition is false..
ifelse(
# test out this nested condition..
y < 50 & x > 70 ,
# and if THAT is true, set `finalmark` equal to this
y + 10 ,
# ..otherwise, if the second condition is also false..
ifelse(
# test if this second nested condition is true
y <= 50 & x < 70 ,
# and if THAT is true, set `finalmark` equal to this
y ,
# otherwise, set `finalmark` equal to MISSING
NA
# close all of your parentheses
# out to the same level as before.
)
)
)
答案 1 :(得分:0)
作为一行(假设您希望第三个条件输出y
,就像在代码尝试中那样):
finalmark <- ifelse(y>=50, 0.2*x+0.8*y, ifelse(x>70, y+10, y))
答案 2 :(得分:0)
它仅适用于一个ifelse
命令:
finalmark <- ifelse(y >= 50, 0.2 * x + 0.8 * y, y + 10 * (x > 70))