我有一個CSV文件,其中有'等級'列,條目(等級)從'F'和'D +'等於'A'(不是'A +')。所以,我想要做的是將這些值從例如'A'轉換爲4.0(數值),'A-'轉換爲3.7(再次 - 數值)。無法將列條目從等級(字符串)更改爲數值(GPA)
到目前爲止,我試圖重估()從plyr庫,但沒有奏效。
filtered_data$Grade <-
as.numeric(as.character(revalue(filtered_data$Grade,
+ c("A"="4.0", "A-"="3.7",
+ "B+" = "3.3", "B" = "3.0",
+ "B-" = "2.7", "C+" = "2.3",
+ "C" = "2.0", "C-" = "1.7",
+ "D+" = "1.3", "D" = "1.0",
+ "F" = "0.0"))))
Error in revalue(filtered_data$Grade, c(A = "4.0", `A-` = "3.7",
`B+` = "3.3", :
x is not a factor or a character vector.
我也試着做一些技巧與as.numeric(as.character(富)),但這並沒有正常工作。
三,「硬編碼」的方法,因爲我試圖執行for循環改變在一列中的每個條目沒有工作好,但我提前得到這個消息
Warning message:
In `[<-.factor`(`*tmp*`, i, value = c(11L, 16L, 5L, 13L, 8L, 16L, :
invalid factor level, NA generated
謝謝!
您可以將數據框定義爲查找表,然後將其合併到原始數據中,從而創建一個帶有數字值的新變量。例如。 'lookupTable < - data.frame(Grade = c(「A」,「A-」,「B +」,「B」,「B-」,「C +」,「C」,「C-」,「D +」 ,「D」,「F」),Grade_num = c(4.0,3.7,3.3,3.0,2.7,2.3,2.0,1.7,1.3,1.0,0))。然後'filtered_data < - merge(x = filtered_data,y = lookupTable,by =「Grade」)' – ikop