如何在 R 資料框中合併因子變數的水平?


R 資料框可以包含數值型和因子型變數。已經發現,原始資料中的因子水平即使在不同的語言版本中也會被記錄為同義詞,但這並不常見。例如,一個因子變數可以有熱和冷作為水平,但也有可能熱被說印地語的人記錄為 garam,因為 garam 是熱的印地語形式。因此,我們需要將類似的水平合併為一個,這樣我們就不需要為變數設定不必要的因子水平。

示例

考慮以下資料框 -

set.seed(109)
x1<-rep(c("Sweet","Meetha","Bitter","Salty"),times=5)
x2<-sample(1:100,20)
x3<-rpois(20,5)
df1<-data.frame(x1,x2,x3)
df1

輸出

   x1 x2 x3
1 Sweet 8 4
2 Meetha 22 6
3 Bitter 25 3
4 Salty 85 10
5 Sweet 90 13
6 Meetha 10 0
7 Bitter 55 7
8 Salty 92 7
9 Sweet 95 4
10 Meetha 31 4
11 Bitter 5 4
12 Salty 56 6
13 Sweet 32 4
14 Meetha 78 6
15 Bitter 16 10
16 Salty 48 9
17 Sweet 49 4
18 Meetha 35 4
19 Bitter 37 9
20 Salty 11 8

由於 Meetha 是 Sweet 的印地語版本,我們可能希望將 Meetha 轉換為 Sweet,這可以透過以下方式完成 -

示例

levels(df1$x1)[levels(df1$x1)=="Meetha"] <-"Sweet"
df1

輸出

x1 x2 x3
1 Sweet 8 4
2 Sweet 22 6
3 Bitter 25 3
4 Salty 85 10
5 Sweet 90 13
6 Sweet 10 0
7 Bitter 55 7
8 Salty 92 7
9 Sweet 95 4
10 Sweet 31 4
11 Bitter 5 4
12 Salty 56 6
13 Sweet 32 4
14 Sweet 78 6
15 Bitter 16 10
16 Salty 48 9
17 Sweet 49 4
18 Sweet 35 4
19 Bitter 37 9
20 Salty 11 8

讓我們看另一個例子 -

示例

ID <-1:20
Class<-rep(c("First","Second","Third","Fourth","One"),each=4)
df2<-data.frame(ID,Class)
df2

輸出

ID Class
1 1 First
2 2 First
3 3 First
4 4 First
5 5 Second
6 6 Second
7 7 Second
8 8 Second
9 9 Third
10 10 Third
11 11 Third
12 12 Third
13 13 Fourth
14 14 Fourth
15 15 Fourth
16 16 Fourth
17 17 One
18 18 One
19 19 One
20 20 One

示例

levels(df2$Class)[levels(df2$Class)=="One"] <-"First"
df2

輸出

ID Class
1 1 First
2 2 First
3 3 First
4 4 First
5 5 Second
6 6 Second
7 7 Second
8 8 Second
9 9 Third
10 10 Third
11 11 Third
12 12 Third
13 13 Fourth
14 14 Fourth
15 15 Fourth
16 16 Fourth
17 17 First
18 18 First
19 19 First
20 20 First

更新於: 2020-08-24

3K+ 瀏覽量

啟動你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.