使用 R 中的 as.numeric 函式將因子轉換為數字

Jinku Hu 2023年1月30日 2021年7月14日
  1. 在 R 中使用 as.numeric 函式將因子轉換為數字
  2. 在 R 中結合 as.characteras.numeric 函式將因子轉換為數字
使用 R 中的 as.numeric 函式將因子轉換為數字

本文將演示如何在 R 中將因子轉換為數字的多種方法。

在 R 中使用 as.numeric 函式將因子轉換為數字

as 函式通常用於將資料型別顯式轉換為另一種型別。轉換過程在 R 術語中稱為強制轉換,它表示其他程式語言中存在的強制轉換概念。當我們呼叫函式 as.logical 時,它會嘗試將傳遞的引數強制轉換為邏輯型別。類似地,as.characteras.numeric 將給定的引數轉換為相應的型別。請注意,轉換為邏輯型別的任何數字(零除外)都表示 TRUE 值,甚至是負值。

> as.logical(31)
[1] TRUE

> as.logical(-31)
[1] TRUE

> as.character(31)
[1] "31"

> as.numeric(FALSE)
[1] 0

> as.numeric(TRUE)
[1] 1

R 還實現了隱式型別強制規則,當對由不同型別組成的向量進行算術運算時需要這些規則。如以下程式碼片段所示,如果原子向量包含字串,則其他所有元素也會轉換為字串。如果向量包含邏輯、數字和字串的混合元素,它們將被強制轉換為字串型別。最後,當向量包含數字和邏輯時,將後者轉換為數字。

> v1 <- c(1, "two", 3, 4, 5, 6)

> typeof(v1)
[1] "character"

> v1 <- c(T, "two", 3, 1, F, T)

> typeof(v1)
[1] "character"

> v1 <- c(1, T, 3, F, 5, 6)

> typeof(v1)
[1] "double"

將因子轉換為數字時,重要的是要注意 as.numeric 將只返回底層整數表示,這幾乎沒有意義並且不對應於因子級別。可以使用 unclass 函式檢查因子物件是如何在內部儲存的。請注意,f2 因子的索引為 2 1 2 3,通常使用 as.number 呼叫返回,如下面的程式碼示例所示:

> f2 <- factor(c(3, 2, 3, 4))

> f2
[1] 3 2 3 4
Levels: 2 3 4

> f2.n <- as.numeric(f2)

> unclass(f2)
[1] 2 1 2 3
attr(,"levels")
[1] "2" "3" "4"

> f2.n
[1] 2 1 2 3

在 R 中結合 as.characteras.numeric 函式將因子轉換為數字

通過組合 as.characteras.numeric 函式,可以將因子級別轉換為整數型別。as.character 以字串形式返回因子水平。然後我們可以呼叫 as.numeric 函式將字串強制轉換為數字。

> f2 <- factor(c(3, 2, 3, 4))

> f2.c <- as.character(f2)

> f2.c
[1] "3" "2" "3" "4"

> f2.c <- as.numeric(as.character(f2))

> f2.c
[1] 3 2 3 4
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - R Factor