如何在 R 資料框中使重複的因子水平唯一?


具有重複水平的因子表示分組資料,但如果我們想將分組資料轉換為名義資料,則必須刪除重複值或將其轉換為唯一值。為了在 R 資料框中使重複的因子水平唯一,我們可以使用 make.unique 函式。

檢視下面的示例以瞭解其工作原理。

示例 1

以下程式碼片段建立了一個示例資料框 -

Factor<-factor(sample(c("Hot","Cold","Warm","Room Temp"),20,replace=TRUE))
Sales<-sample(11:50,20)
df1<-data.frame(Factor,Sales)
df1

建立了以下資料框

 Factor    Sales
1  Warm      43
2  Cold      50
3  Hot       33
4  Hot       25
5  Warm      22
6  Cold      20
7  Hot       18
8  Warm      35
9  Hot       38
10 Room Temp 32
11 Cold      41
12 Hot       40
13 Cold      21
14 Cold      15
15 Cold      23
16 Room Temp 26
17 Cold      48
18 Warm      28
19 Cold      42
20 Room Temp 27

為了使上面建立的資料框中 Factor 列中的水平唯一,請將以下程式碼新增到上述程式碼片段中 -

Factor<-factor(sample(c("Hot","Cold","Warm","Room Temp"),20,replace=TRUE))
Sales<-sample(11:50,20)
df1<-data.frame(Factor,Sales)
within(df1,Factor<- ave(as.character(Factor),FUN=make.unique))

如果將上面給出的所有程式碼片段作為單個程式執行,則會生成以下輸出 -

 Factor    Sales
1 Warm       43
2 Cold       50
3 Hot        33
4 Hot.1        25
5 Warm.1       22
6 Cold.1       20
7 Hot.2        18
8 Warm.2       35
9 Hot.3        38
10 Room Temp   32
11 Cold.2      41
12 Hot.4       40
13 Cold.3      21
14 Cold.4      15
15 Cold.5      23
16 Room Temp.1 26
17 Cold.6      48
18 Warm.3      28
19 Cold.7      42
20 Room Temp.2 27

示例 2

以下程式碼片段建立了一個示例資料框 -

Class<-factor(sample(c("First","Second","Third"),20,replace=TRUE))
Price<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Class,Price)
df2

建立了以下資料框

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

為了使上面建立的資料框中 Class 列中的水平唯一,請將以下程式碼新增到上述程式碼片段中 -

Class<-factor(sample(c("First","Second","Third"),20,replace=TRUE))
Price<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Class,Price)
within(df2,Class<-ave(as.character(Class),FUN=make.unique))

輸出

如果將上面給出的所有程式碼片段作為單個程式執行,則會生成以下輸出 -

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

更新於: 2021-11-02

2K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.