首页 > 解决方案 > sort() 工作正常,但使用它来显示完整的排序数据框会给出不同的输出,而不是排序后的输出

问题描述

我想按列的内容对数据框进行排序。关于使用 sort() 函数但没有得到排序的数据框

我有一个数据框,其中包含名称、年龄、性别等列。我想根据年龄对数据框进行排序

我尝试了 sort(data_info$Age) ,它给出了正确的输出:

> my_sort <- sort(data_info$Age)
 [1] 19 19 19 20 20 20 20 20 20 20 20 20 20 21 23
Levels: 19 20 21 23

现在想根据年龄对完整的数据框进行排序,所以使用:

> group_info_df[my_sort,]

我期望一个排序的数据框,但输出是

         Gender Age Favorite_Food Day_of_birth
Marcos     Male  23         Pizza           24        
Marcos.1   Male  23         Pizza           24        
Marcos.2   Male  23         Pizza           24        
Sahil      Male  20          Dosa           17         
Sahil.1    Male  20          Dosa           17         
Sahil.2    Male  20          Dosa           17         
Sahil.3    Male  20          Dosa           17         
Sahil.4    Male  20          Dosa           17   

它多次显示同一行,而不是显示所有其他行。什么是错误或如何解决这个问题

标签: r

解决方案


我们需要使用order而不是sortassort返回排序后的值,但如果我们使用index.return = TRUE. 然后,它将返回一个list名称为“x”和“ix”的排序值和相应的索引。通过查看数据,该列是factor。我们可以将其转换为numeric然后order对数据集的行进行排序

new_df <- group_info_df[order(as.numeric(as.character(data_info$Age))),,
          drop = FALSE]

row.names(new_df) <- NULL

推荐阅读