2016-06-30 64 views
-1

如何按时间对数据帧列进行排序?它看起来像这样:R数据帧排序

2016-06-30 00:15:00 
2016-06-30 00:20:00 
2016-06-30 00:30:00 
2016-06-30 00:00:00 
2016-06-30 00:05:00 
2016-06-30 00:10:00 

我已经尝试了两种不同的方法:到目前为止

1) good[order(good$Time),] 
2) good[order(as.Date(good$Time, format="%Y-%m-%d %h:%m:%s")),, drop=FALSE] 

都没有奏效。

+0

尝试'as.POSIXct'或'strptime'即'好([order(as.POSIXct(good $ TIme,...'as.Date'只返回日期而不是时间,因为Time中的所有元素都有一个日期(在你的例子中),所以它不会进行任何排序。 – akrun

+0

as.POSIXct工作。谢谢。 – Dexstrum

回答

1

我们可能需要as.POSIXctstrptime将'时间'列转换为DateTime类。使用as.Date剥离时间部分,我们只剩下日期。在这个例子中,只有一天,所以它不会按照我们的意图进行排序。

good([order(as.POSIXct(good$TIme, format="%Y-%m-%d %h:%m:%s")),, drop=FALSE] 
1

ISO日期可以按照词汇顺序排序。这是他们更好的属性之一:

good <- c("2016-06-30 00:15:00", "2016-06-30 00:20:00", "2016-06-30 00:30:00", 
"2016-06-30 00:00:00", "2016-06-30 00:05:00", "2016-06-30 00:10:00" 
) 

order(good) 
## [1] 4 5 6 1 2 3