[英]R: How to multiply a factor of numbers by a constant
運行 knn model 后如下: pred_norm <- knn(train_norm, test_norm, cl = train_norm$ef_scale, k = k)
我正在嘗試為我的 output 結果創建一個表,如下所示: tab_norm <- table(pred_norm, 5*test_norm$ef_scale)
我將 test_norm 乘以 5*,因為數據在 knn 之前被標准化,並且該列的原始數據是整數 0-5。 這產生了這張表:
pred_norm 0 1 2 3 4 5
0 5249 0 0 0 0 0
0.2 38 3897 136 1 0 0
0.4 0 0 1523 257 1 0
0.6 0 0 0 211 72 0
0.8 0 0 0 0 5 6
1 0 0 0 0 0 0
這將標准化的 0、0.2、...、1 轉換回原來的 0-5,但是當我嘗試以相同的方式使用 5* 乘以 pred_norm 時,我收到了以下警告消息:
在 Ops.factor(5, pred_norm): '*' 對因子沒有意義。
我嘗試使用pred_norm <- as.numeric(pred_norm)
將其轉換為 integer,它讓我可以轉換數字,但它刪除了 0 並將所有行向上移動,將 4 和 5 合並為一行。 當我嘗試使用pred_norm <- as.integer(pred_norm)
時發生了同樣的事情
兩者都給出了如下所示的表格:
pred_norm 0 1 2 3 4 5
1 5249 0 0 0 0 0
2 38 3897 136 1 0 0
3 0 0 1523 257 1 0
4 0 0 0 211 72 0
5 0 0 0 0 5 6
有沒有人建議我如何轉換 pred_norm 以使其為 0-5 而不是 0-1 的小數或 1-5 的整數?
也許您可以嘗試as.character
+ as.numeric
如下所示
df$pred_norm <- as.numeric(as.character(df$pred_norm))*5
或levels
+ as.numeric
df$pred_norm <- as.numeric(levels(df$pred_norm)[df$pred_norm])*5
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.