sort()正常工作,但使用它显示完整的排序数据框会得到不同的输出,而不是排序后的输出

时间:2019-07-07 22:10:28

标签: r

我想按列的内容对数据框进行排序。 使用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   

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

1 个答案:

答案 0 :(得分:0)

我们需要使用order而不是sort,因为sort返回排序后的值,但是如果我们使用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