如何在 R 資料框中排序數值型因子列?


要對 R 資料框中的數值型因子列進行排序,我們需要使用 as.character 函式將該列轉換為字元型,然後使用 as.numeric 函式轉換為數值型,最後使用 order 函式進行排序。

例如,如果我們有一個名為 df 的資料框,其中包含一個名為 F 的數值型因子列,則可以使用以下命令對 F 進行排序:

df[order(as.numeric(as.character(df$F))),]

示例 1

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

Class<-factor(sample(1:4,20,replace=TRUE))
Sales<-sample(1:50,20)
df1<-data.frame(Class,Sales)
df1

建立了以下資料框

  Class Sales
 1 1    4
 2 2   13
 3 3    2
 4 2   39
 5 2   23
 6 3   37
 7 4   33
 8 3   16
 9 4   17
10 2   20
11 3   50
12 1   27
13 4    6
14 4   19
15 4   48
16 3   43
17 4   31
18 3   35
19 2   14
20 4   45

要在上面建立的資料框中對 df1 的 Class 列進行排序,請將以下程式碼新增到上述程式碼片段中:

Class<-factor(sample(1:4,20,replace=TRUE))
Sales<-sample(1:50,20)
df1<-data.frame(Class,Sales)
df1[order(as.numeric(as.character(df1$Class))),]

輸出

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

  Class Sales
 1 1     4
12 1    27
 2 2    13
 4 2    39
 5 2    23
10 2    20
19 2    14
 3 3     2
 6 3    37
 8 3    16
11 3    50
16 3    43
18 3    35
 7 4    33
 9 4    17
13 4     6
14 4    19
15 4    48
17 4    31
20 4    45

示例 2

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

Group<-factor(sample(1:3,20,replace=TRUE))
Demand<-sample(500:1000,20)
df2<-data.frame(Group,Demand)
df2

建立了以下資料框

  Group Demand
 1 1    625
 2 3    855
 3 3    809
 4 2    951
 5 2    939
 6 2    629
 7 2    902
 8 1    903
 9 3    633
10 1    886
11 1    962
12 2    577
13 1    660
14 3    709
15 1    584
16 3    889
17 1    762
18 3    594
19 2    779
20 2    859

要在上面建立的資料框中對 df2 的 Group 列進行排序,請將以下程式碼新增到上述程式碼片段中:

Group<-factor(sample(1:3,20,replace=TRUE))
Demand<-sample(500:1000,20)
df2<-data.frame(Group,Demand)
df2[order(as.numeric(as.character(df2$Group))),]

輸出

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

  Group Demand
 1 1    625
 8 1    903
10 1    886
11 1    962
13 1    660
15 1    584
17 1    762
 4 2    951
 5 2    939
 6 2    629
 7 2    902
12 2    577
19 2    779
20 2    859
 2 3    855
 3 3    809
 9 3    633
14 3    709
16 3    889
18 3    594

更新於: 2021年11月10日

2K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.