使用字符和数字列排序数据框

时间:2014-05-25 21:32:43

标签: r dataframe multiple-columns

我有一个数据框:

 df <- data.frame(c(name = "FORT DUNCAN", "DETAR HOSPITAL", "CYPRESS FAIRBANKS","MISSION REGIONAL", "Test"), rate = c(8.0,8.7,8.7,8.1,8.9))
colnames(df) = c("name","rate")
ordered_df <- df[order(df[,2]),]

               name rate
1       FORT DUNCAN  8.0
4  MISSION REGIONAL  8.1
2    DETAR HOSPITAL  8.7
3 CYPRESS FAIRBANKS  8.7
5              Test  8.9

我可以通过rate变量清楚地对数据帧进行排序。但是,如果两个费率相似,那么我想按名称订购。即Detar医院和赛普拉斯费尔班克斯的费率相同,为8.7。因此,我希望Cypress Fairbanks向上移动,Detar医院向下移动,Test应保持在原位(根据费率最后一个位置)...... 任何想法???

干杯

2 个答案:

答案 0 :(得分:2)

由于order通过...接受了许多变量,您可以执行以下操作:

> df[order(df[,2],df[,1] ),]
               name rate
1       FORT DUNCAN  8.0
4  MISSION REGIONAL  8.1
3 CYPRESS FAIRBANKS  8.7
2    DETAR HOSPITAL  8.7
5              Test  8.9

答案 1 :(得分:2)

我想我是通过以下方式解决的:

ordered_df <- df[order(df$rate, df$name),]

干杯