如何在R中將多個數值變數轉換為因子變數?


有時變數的資料型別不正確,因子變數被讀取為數值變數的情況很常見,尤其是在因子水平由數字表示的情況下。如果我們不更改因子變數的資料型別,則分析結果將不正確。因此,如果因子變數的資料型別與因子不同,則必須將其轉換為因子資料型別。為了將多個變數轉換為因子型別,我們可以建立一個包含所有因子變數名稱的向量,然後使用lapply將其轉換為因子。

示例

考慮下面的資料框:

> set.seed(123)
> x1<-rep(c(1,2,3,4,5),times=4)
> x2<-rep(c(5,10,15,20),each=5)
> x3<-sample(1:10,20,replace=TRUE)
> x4<-sample(1:100,20)
> x5<-rep(c(LETTERS[1:5]),times=4)
> x6<-rnorm(20,1)
> x7<-runif(20,2,10)
> df<-data.frame(x1,x2,x3,x4,x5,x6,x7)
> df
x1 x2 x3 x4 x5 x6 x7
1 1 5 3 9 A 0.18148428 3.501529
2 2 5 3 83 B 1.68493608 8.258354
3 3 5 10 36 C 0.67994358 2.748760
4 4 5 2 78 D -0.31152241 5.734232
5 5 5 6 81 E 0.40039167 6.092044
6 1 10 5 43 A 0.87058931 6.799912
7 2 10 4 76 B 1.88673615 4.662588
8 3 10 6 15 C 0.84860404 5.908904
9 4 10 9 32 D 1.32979120 9.635791
10 5 10 10 7 E -2.22732283 5.863219
11 1 15 5 100 A 0.22820823 9.122802
12 2 15 3 41 B 1.28654857 9.315505
13 3 15 9 74 C -0.22051198 6.869880
14 4 15 9 23 D 1.43455038 5.285518
15 5 15 9 27 E 1.80017687 3.176758
16 1 20 3 60 A 0.83606903 9.482398
17 2 20 8 53 B 2.24291877 4.409831
18 3 20 10 91 C 0.06561494 2.485765
19 4 20 7 84 D 1.39370865 9.581816
20 5 20 10 86 E 1.40363146 7.764770
> str(df)
'data.frame': 20 obs. of 7 variables:
$ x1: num 1 2 3 4 5 1 2 3 4 5 ...
$ x2: num 5 5 5 5 5 10 10 10 10 10 ...
$ x3: int 3 3 10 2 6 5 4 6 9 10 ...
$ x4: int 9 83 36 78 81 43 76 15 32 7 ...
$ x5: Factor w/ 5 levels "A","B","C","D",..: 1 2 3 4 5 1 2 3 4 5 ...
$ x6: num 0.181 1.685 0.68 -0.312 0.4 ...
$ x7: num 3.5 8.26 2.75 5.73 6.09 ...

這裡,我們有一個因子變數。現在假設我們想將x1、x2和x3轉換為因子變數,則可以按如下方式進行:

> Factors<-c("x1","x2","x3")
> df[Factors]<-lapply(df[Factors],factor)

檢查x1、x2和x3是否為因子變數:

> str(df)
'data.frame': 20 obs. of 7 variables:
$ x1: Factor w/ 5 levels "1","2","3","4",..: 1 2 3 4 5 1 2 3 4 5 ...
$ x2: Factor w/ 4 levels "5","10","15",..: 1 1 1 1 1 2 2 2 2 2 ...
$ x3: Factor w/ 9 levels "2","3","4","5",..: 2 2 9 1 5 4 3 5 8 9 ...
$ x4: int 9 83 36 78 81 43 76 15 32 7 ...
$ x5: Factor w/ 5 levels "A","B","C","D",..: 1 2 3 4 5 1 2 3 4 5 ...
$ x6: num 0.181 1.685 0.68 -0.312 0.4 ...
$ x7: num 3.5 8.26 2.75 5.73 6.09 ...

更新於:2020年8月12日

瀏覽量1K+

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告