簡體   English   中英

R:如何將數字乘以常數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM