如何在 R 数据框中对数值因子列进行排序?

r programmingserver side programmingprogramming更新于 2025/6/24 7:52:17

要在 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

相关文章