R根据第一个数字排序数据

时间:2016-07-03 17:22:10

标签: r sorting

我正在尝试根据数字的第一位数字来整理数据。例如,

#Generate sample data
dat<-round(runif(5,90,99),digits=0)
dat1<-round(runif(5,1515,1590),digits=0)
dat2<-round(runif(5,156,190),digits=0)
dat3<-round(runif(5,900,999),digits=0)

data<-c(dat,dat1,dat2,dat3)

如果我想对数据进行排序,我会这样做

sort(data)

但是,我想要做的是根据第一个数字对数据进行排序。例如,所有以9开头的数字应首先出现,所有以1开头的数字应该稍后出现。像这样的东西

90,93,96,97,98,938,944,953,973,983,168,169,177,183,188,1515,1560,1563,1564,1587

无论如何我能在R中做到这一点吗?

由于

1 个答案:

答案 0 :(得分:1)

我们可以使用substr根据该数字提取第一个数字和order'数据'。

data[order(-as.numeric(substr(data, 1, 1)), data)]
#[1]   90   93   96   97   98  938  944  953  973  983  168  169  177  183  188 1515 1560 1563 1564 1587

数据

data <- c(938, 1515, 90, 1587, 188, 983, 1560, 973, 183, 168, 1563, 98,  
         96, 177, 169, 97, 953, 944, 93, 1564)