如何在 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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP