如何在 R 中將包含分類列的資料框轉換為數值型?


我們可能希望將分類列轉換為數值型,原因例如序數或名義資料的引數結果。如果我們有分類列,並且值使用字母/單詞表示,則轉換將基於類別的第一個字元。要了解轉換,請檢視以下示例。

示例 1

 線上演示

考慮以下資料框 -

set.seed(100)
x1<−sample(LETTERS[1:4],20,replace=TRUE)
x2<−sample(LETTERS[1:4],20,replace=TRUE)
x3<−sample(LETTERS[1:4],20,replace=TRUE)
x4<−sample(LETTERS[1:4],20,replace=TRUE)
df1<−data.frame(x1,x2,x3,x4)
df1

輸出

x1 x2 x3 x4
1 B C C B
2 C D A A
3 B B D A
4 D A C A
5 C D D B
6 A C B D
7 B C B C
8 B D A C
9 D B A C
10 C A B A
11 D B B A
12 B C A B
13 B D C D
14 D D C B
15 C B A C
16 B D C A
17 B D A B
18 C D D D
19 C A C C
20 C C C B

將 df1 中的列轉換為數值型 -

示例

df1[]<−as.numeric(factor(as.matrix(df1)))
df1

輸出

x1 x2 x3 x4
1 2 3 3 2
2 3 4 1 1
3 2 2 4 1
4 4 1 3 1
5 3 4 4 2
6 1 3 2 4
7 2 3 2 3
8 2 4 1 3
9 4 2 1 3
10 3 1 2 1
11 4 2 2 1
12 2 3 1 2
13 2 4 3 4
14 4 4 3 2
15 3 2 1 3
16 2 4 3 1
17 2 4 1 2
18 3 4 4 4
19 3 1 3 3
20 3 3 3 2

示例 2

 線上演示

y1<−sample(c("Hot","Cold","Bitter"),20,replace=TRUE)
y2<−sample(c("Hot","Cold","Bitter"),20,replace=TRUE)
y3<−sample(c("Hot","Cold","Bitter"),20,replace=TRUE)
df2<−data.frame(y1,y2,y3)
df2

輸出

y1 y2 y3
1 Bitter Hot Cold
2 Bitter Cold Hot
3 Bitter Bitter Cold
4 Cold Hot Bitter
5 Bitter Cold Cold
6 Cold Hot Bitter
7 Cold Cold Cold
8 Hot Cold Bitter
9 Bitter Bitter Bitter
10 Bitter Hot Bitter
11 Bitter Cold Cold
12 Bitter Bitter Hot
13 Hot Bitter Bitter
14 Cold Bitter Cold
15 Cold Bitter Bitter
16 Hot Bitter Hot
17 Bitter Cold Cold
18 Hot Cold Bitter
19 Hot Hot Cold
20 Hot Bitter Cold

將 df2 中的列轉換為數值型 -

示例

df2[]<−as.numeric(factor(as.matrix(df2)))
df2

輸出

y1 y2 y3
1 1 3 2
2 1 2 3
3 1 1 2
4 2 3 1
5 1 2 2
6 2 3 1
7 2 2 2
8 3 2 1
9 1 1 1
10 1 3 1
11 1 2 2
12 1 1 3
13 3 1 1
14 2 1 2
15 2 1 1
16 3 1 3
17 1 2 2
18 3 2 1
19 3 3 2
20 3 1 2

這裡,考慮類別的第一個字母進行編號。

更新於: 2021 年 2 月 9 日

935 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告