如何在 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
广告