如何在 R 中按列拆分資料框?


如果我們有一個數據框列包含一些重複值或表示類別,那麼我們可能希望根據該列拆分資料框。

例如,如果我們有一個名為 df 的資料框,其中包含一個名為 Col 的列,那麼我們可以使用下面給出的命令根據 Col 拆分資料框。

split(df,df$Col)

示例 1

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

Group<-sample(c("Male","Female"),20,replace=TRUE)
Score<-rpois(20,8)
df1<-data.frame(Group,Score)
df1

建立了以下資料框:

  Group  Score
1  Male    8
2  Female  6
3  Female  5
4  Female  7
5  Female 12
6  Female 10
7  Female  9
8  Male    9
9  Male   10
10 Female 13
11 Female  4
12 Male   11
13 Female  5
14 Male    6
15 Female  9
16 Male    9
17 Female  5
18 Female  8
19 Male    3
20 Female  5

要根據 Group 列拆分 df1,請將以下程式碼新增到上述程式碼片段中:

Group<-sample(c("Male","Female"),20,replace=TRUE)
Score<-rpois(20,8)
df1<-data.frame(Group,Score)
split(df1,df1$Group)

輸出

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

$Female
    Group Score
2  Female  6
3  Female  5
4  Female  7
5  Female 12
6  Female 10
7  Female  9
10 Female 13
11 Female  4
13 Female  5
15 Female  9
17 Female  5
18 Female  8
20 Female  5

$Male
  Group Score
1  Male  8
8  Male  9
9  Male 10
12 Male 11
14 Male  6
16 Male  9
19 Male  3

示例 2

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

Class<-sample(c("I","II","III"),20,replace=TRUE)
Number_of_Customers<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Class,Number_of_Customers)
df2

建立了以下資料框:

 Class Number_of_Customers
1   II   2
2    I  10
3  III   2
4  III   4
5  III   5
6  III   7
7  III  10
8   II   4
9   II   9
10   I   7
11 III   4
12   I   1
13   I   1
14   I   1
15 III   5
16  II   5
17  II   9
18  II   8
19  II   8
20   I   9

要根據 Class 列拆分 df2,請將以下程式碼新增到上述程式碼片段中:

Class<-sample(c("I","II","III"),20,replace=TRUE)
Number_of_Customers<-sample(1:10,20,replace=TRUE)
df2<-data.frame(Class,Number_of_Customers)
split(df2,df2$Class)

輸出

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

$I
  Class Number_of_Customers
2   I   10
10  I    7
12  I    1
13  I    1
14  I    1
20  I    9

$II
 Class Number_of_Customers
1  II   2
8  II   4
9  II   9
16 II   5
17 II   9
18 II   8
19 II   8

$III
 Class Number_of_Customers
3  III   2
4  III   4
5  III   5
6  III   7
7  III  10
11 III   4
15 III   5

更新於:2021年11月9日

3K+ 瀏覽量

開啟您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.