「F」および「D +」から「A」までの項目(グレード)を持つ「グレード」列を持つCSVファイルがあります。 '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(FOO))でいくつかのトリックをやってみましたが、これは同様に動作しませんでした。私は列のすべてのエントリを変更するループためを実装しようとしたので、
第三に、「ハードコーディング」メソッドは、同様に動作しませんでしたが、私は、事前にこのメッセージに
Warning message:
In `[<-.factor`(`*tmp*`, i, value = c(11L, 16L, 5L, 13L, 8L, 16L, :
invalid factor level, NA generated
おかげです!要因にあなたの等級列を変更
ルックアップテーブルとして値を持つデータフレームを定義し、それを元のデータにマージして、数値で新しい変数を作成することができます。例えば。グレード= 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