将百分比转换为R中的字母等级

时间:2014-12-11 03:50:45

标签: r

我已经创建了一个R脚本来计算我正在教授的课程的最终分数,并希望使用R来创建最终的字母等级。如何获取百分比向量,例如:

grades <- c(.47, .93, .87, .86, .79, .90)

并根据适当的百分比范围将它们转换为字母等级,例如70-79 = C,80-89 = B,90-100 = A?

3 个答案:

答案 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+