我是試圖學習 R 的學生......并且花了幾個小時試圖解決這個問題,但到目前為止都失敗了。也許我用錯誤的方式來處理它,或者不知道一些基本的東西。
我有學號和模塊結果的資料 - 結果是數字形式,我想將結果更改為成績 - A、B、C 等。我設法創建了一個回圈來列印成績,但可以不知道如何將它放入資料框中。
我擁有的資料集非常大,所以我為下面的示例創建了一些虛擬資料,代碼運行,并且沒有給我任何錯誤,但它沒有用字母等級替換數字:
`Result <- c(50,67,89,77,65,66,70,73,69,80)
for (i in Result){
if (i < 16.67) {
print ("G ")
i <- "G "
} else if (i < 26.67) {
print ("F ")
i <- "F "
} else if (i < 36.67) {
print ("E ")
i <- "E "
} else if (i < 40) {
print ("D-")
i <- "D "
}else if (i < 43.33) {
print ("D")
i <- "D"
}else if (i < 46.67) {
print ("D ")
i <- "D "
}else if (i < 50) {
print ("C-")
i <- "C-"
}else if (i < 53.33) {
print ("D")
i <- "D"
}else if (i < 56.67) {
print ("D ")
i <- "D "
}else if (i < 60) {
print ("B-")
i <- "B-"
}else if (i < 63.33) {
print ("B")
i <- "B"
}else if (i < 66.67) {
print ("B ")
i <- "B "
}else if (i < 70) {
print ("A-")
i <- "A-"
}else if (i < 73.33) {
print ("A")
i <- "A"
}else if (i < 100) {
print ("A ")
i <- "A "
}
}
# result: [1] "D"
[1] "A-"
[1] "A "
[1] "A "
[1] "B "
[1] "B "
[1] "A"
[1] "A"
[1] "A-"
[1] "A "` `
任何建議將不勝感激。非常感謝,埃爾。
uj5u.com熱心網友回復:
將您的示例資料放在 data.frame 中:
df <- data.frame( result = c(50,67,89,77,65,66,70,73,69,80) )
然后用于cut()在該 data.frame 的新列中獲取成績:
df$grade <- cut(df$result,
breaks = c(0, 16.67, 26.67, 36.67, 40, 43.33, 46.67, 50, 53.33, 56.67, 60, 63.33, 66.67, 70, 73.33, 100),
labels = c("G ", "F ", "E ", "D-", "D", "D ", "C-", "C", "C ", "B-", "B", "B ", "A-", "A", "A "))
列印結果進行檢查:
df
result grade
1 50 C-
2 67 A-
3 89 A
4 77 A
5 65 B
6 66 B
7 70 A-
8 73 A
9 69 A-
10 80 A
請注意,(1) 將結果保存到 data.frame 比簡單地列印它們更好,并且 (2) 如果不回圈,許多事情可以在 R 中做得更好/更快;而是使用 R 的矢量化函式(如cut!)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367558.html
