我有一个包含40列的数据框,我想在“延迟”列上从小到大排序。什么是最好的方式?
作为一个例子,我在下面有一个数据框,有4行和一个“延迟”列:
col1<-c(1,2,4,5)
col2<-c(5,6,7,4)
posX1<-as.POSIXct(c("2014-11-10 19:47:09","2014-11-10 19:59:49","2014-11-10 20:19:18","2014-11-10 20:59:25"))
posX2<-as.POSIXct("2014-11-10 20:59:25")
dif<-abs(posX1 - posX2)
data.frame(col1 = col1, col2=col2,time=posX1,delay=dif)
col1 col2 time delay
1 1 5 2014-11-10 19:47:09 4336 secs
2 2 6 2014-11-10 19:59:49 3576 secs
3 4 7 2014-11-10 20:19:18 2407 secs
4 5 4 2014-11-10 20:59:25 0 secs
如何从延迟列的最小到最大排序?
谢谢!
答案 0 :(得分:1)
首先,我建议使用data.table而不是data.frame,因为它的速度。 如果你使用data.table那么它很简单:
> A = data.table(col1 = col1, col2=col2,time=posX1,delay=dif)
> setkey(A,"delay")
> A
col1 col2 time delay
1: 5 4 2014-11-10 20:59:25 0 secs
2: 4 7 2014-11-10 20:19:18 2407 secs
3: 2 6 2014-11-10 19:59:49 3576 secs
4: 1 5 2014-11-10 19:47:09 4336 secs
如果您坚持使用data.frame,请使用:
> A = data.frame(col1 = col1, col2=col2,time=posX1,delay=dif)
> A[order(A$delay),]
col1 col2 time delay
4 5 4 2014-11-10 20:59:25 0 secs
3 4 7 2014-11-10 20:19:18 2407 secs
2 2 6 2014-11-10 19:59:49 3576 secs
1 1 5 2014-11-10 19:47:09 4336 secs