我已经创建了一个R脚本来计算我正在教授的课程的最终分数,并希望使用R来创建最终的字母等级。如何获取百分比向量,例如:
grades <- c(.47, .93, .87, .86, .79, .90)
并根据适当的百分比范围将它们转换为字母等级,例如70-79 = C,80-89 = B,90-100 = A?
答案 0 :(得分:3)
grades <- c(.47, .93, .87, .86, .79, .90)
letter.grade <- cut(grades, c(0, 0.7,0.8,0.9,Inf), right=FALSE, labels=letters[4:1]);
letter.grade
正如@MrFlick建议您可以使用剪切。 right = FALSE选项意味着右边的间隔不包括在内。对于削减工作,只需将你的成绩和你想要的分数作为论据。
感谢@jlhoward的改进建议
答案 1 :(得分:3)
另一种选择是使用findInterval
LETTERS[4:1][findInterval(grades, c(0,0.7,0.8,0.9))]
#[1] "D" "A" "B" "B" "C" "A"
答案 2 :(得分:0)
如果像我这样的人也想要 + 和 -:
numeric_grades = c(98, 65, 78)
cutoff = c(0, seq(60, 100, by = 10/3))
cutoff[length(cutoff)] = Inf
grades = c("F", paste0(toupper(rep(letters[4:1], each = 3)), rep(c("-","","+"),4)))
cut(numeric_grades, cutoff, right=FALSE, labels=grades)
# [1] A+ D C+