如何在R語言中將所有列的資料型別從整數轉換為因子?


要將所有列的資料型別從整數轉換為因子,我們可以使用帶有因子函式的lapply函式。

例如,如果我們有一個名為df的資料框,其中包含所有整數列,那麼我們可以使用以下命令將所有列的資料型別轉換為因子:

df<-data.frame(lapply(df,factor))

示例1

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

x1<-rpois(20,1)
x2<-rpois(20,2)
df1<-data.frame(x1,x2)
df1

建立了以下資料框:

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

要將所有列的資料型別從整數轉換為因子,請將以下程式碼新增到上面的程式碼片段中:

x1<-rpois(20,1)
x2<-rpois(20,2)
df1<-data.frame(x1,x2)
str(df1)

輸出

如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:

'data.frame': 20 obs. of 2 variables:
$ x1: int 1 3 0 1 1 1 1 3 2 3 ...
$ x2: int 4 0 1 1 2 1 2 2 3 5 ...

要將df1中列的資料型別轉換為因子,請將以下程式碼新增到上面的程式碼片段中:

x1<-rpois(20,1)
x2<-rpois(20,2)
df1<-data.frame(x1,x2)
df1<-data.frame(lapply(df1,factor))
str(df1)

輸出

如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:

'data.frame': 20 obs. of 2 variables:
$ x1: Factor w/ 4 levels "0","1","2","3": 2 4 1 2 2 2 2 4 3 4 ...
$ x2: Factor w/ 6 levels "0","1","2","3",..: 5 1 2 2 3 2 3 3 4 6 ...

示例2

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

y1<-sample(0:1,20,replace=TRUE)
y2<-sample(1:4,20,replace=TRUE)
df2<-data.frame(y1,y2)
df2

建立了以下資料框:

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

要將所有列的資料型別從整數轉換為因子,請將以下程式碼新增到上面的程式碼片段中:

y1<-sample(0:1,20,replace=TRUE)
y2<-sample(1:4,20,replace=TRUE)
df2<-data.frame(y1,y2)
str(df2)

輸出

如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:

'data.frame': 20 obs. of 2 variables:
$ y1: int 0 1 0 0 1 0 0 1 0 0 ...
$ y2: int 2 3 2 2 3 3 2 3 4 1 ...

要將df2中列的資料型別轉換為因子,請將以下程式碼新增到上面的程式碼片段中:

y1<-sample(0:1,20,replace=TRUE)
y2<-sample(1:4,20,replace=TRUE)
df2<-data.frame(y1,y2)
df2<-data.frame(lapply(df2,factor))
str(df2)

輸出

如果您將以上所有程式碼片段作為一個程式執行,它將生成以下輸出:

'data.frame': 20 obs. of 2 variables:
$ y1: Factor w/ 2 levels "0","1": 1 2 1 1 2 1 1 2 1 1 ...
$ y2: Factor w/ 4 levels "1","2","3","4": 2 3 2 2 3 3 2 3 4 1 ...

更新於:2021年11月12日

3K+瀏覽量

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.