我有一个学生成绩单分数的数据集,范围从 D- 到 A+。我想将它们重新编码为 1-12 的范围(即 D- = 1、D = 2 ... A = 11、A+ = 12)。现在我正在起诉revalue
函数于plyr
。我有几列想要重新编码 - 有没有比运行更短的方法来做到这一点revalue
在每一列上?
一些数据:
student <- c("StudentA","StudentB","StudentC","StudentD","StudentE","StudentF","StudentG","StudentH","StudentI","StudentJ")
read <- c("A", "A+", "B", "B-", "A", "C", "C+", "D", "C", "B+")
write <- c("A-", "B", "C", "C+", "D", "B-", "B", "C", "D+", "B")
math <- c("C", "C", "D+", "A", "A+", "B", "B-", "C-", "D+", "C")
df <- data.frame (student, read, write, math)
现在我正在像这样重新编码它们:
df$read.r <- as.numeric (revalue (df$read, c("D-" = "1",
"D" = "2",
"D+" = "3",
"C-" = "4",
"C" = "5",
"C+" = "6",
"B-" = "7",
"B" = "8",
"B+" = "9",
"A-" = "10",
"A" = "11",
"A+" = "12"
)))
除了运行 3 次(或更多次)之外,还有更好的方法吗?所有列都具有相同的值。