我正在尝试根据数字的第一位数字来整理数据。例如,
#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中做到这一点吗?
由于
答案 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)