首页 > 解决方案 > 如何对数据集中的两列进行排序,我想按列距离和 GoingTo 排序?

问题描述

这是我的数据集,但我将其转换为数据框

travel <- data.frame(
          date=c("1/6/2012","1/6/2012",
               "1/4/2012","1/4/2012",
               "1/3/2012","1/3/2012","1/2/2012")
          ,GoingTo=c("Home","GSK","Home",
                     "GSK","Home","GSK","Home")
          ,Distance=c("51.29","51.63","51.27",
                      "49.17","51.15","51.80","51.37"))

然后我尝试编写这段代码来对两列进行排序,但我有这个错误。

Data_Sort <- travel[sort(travel$Distance,travel$GoingTo , decreasing = TRUE),]

错误

Error in is.na(na.last) || na.last : invalid 'y' type in 'x || y'

标签: rsortingdata-science

解决方案


R中,我们需要order而不是sortassort返回排序后的值而不是索引,而order返回可用作行索引的索引

travel[order(travel$Distance,travel$GoingTo , decreasing = TRUE),]
#     date GoingTo Distance
#6 1/3/2012     GSK    51.80
#2 1/6/2012     GSK    51.63
#7 1/2/2012    Home    51.37
#1 1/6/2012    Home    51.29
#3 1/4/2012    Home    51.27
#5 1/3/2012    Home    51.15
#4 1/4/2012     GSK    49.17

或在dplyr

library(dplyr)
travel %>%
      arrange(desc(Distance), desc(GoingTo))
#    date GoingTo Distance
#1 1/3/2012     GSK    51.80
#2 1/6/2012     GSK    51.63
#3 1/2/2012    Home    51.37
#4 1/6/2012    Home    51.29
#5 1/4/2012    Home    51.27
#6 1/3/2012    Home    51.15
#7 1/4/2012     GSK    49.17

使用sort.int,可以选择返回index.return = TRUE然后提取ix元素,但它不适用于这里,因为列不是类integer


推荐阅读