如何按ID,日期和时间订购数据框?

时间:2013-01-14 09:38:30

标签: r date time

我在R中有这个,我希望将每个ID号彼此相邻,然后按日期排序,最后按时间排序......这可能吗?

   ID Val      Date  Time
1   1 0.7 1/13/2013 12:00
2   2 1.6 1/13/2013 12:00
3   3 0.5 1/13/2013 12:00
4   4 2.1 1/13/2013 12:00
5   5 1.2 1/13/2013 12:00
6   1 1.0 1/13/2013 13:00
7   2 1.1 1/13/2013 13:00
8   3 0.9 1/13/2013 13:00
9   4 2.4 1/13/2013 13:00
10  5 0.8 1/13/2013 13:00

2 个答案:

答案 0 :(得分:6)

order可以采取多个参数来做到这一点:

df <- read.table(text="ID Val      Date  Time
1   1 0.7 1/13/2013 12:00
2   2 1.6 1/13/2013 12:00
3   3 0.5 1/13/2013 12:00
4   4 2.1 1/13/2013 12:00
5   5 1.2 1/13/2013 12:00
6   1 1.0 1/13/2013 13:00
7   2 1.1 1/13/2013 13:00
8   3 0.9 1/13/2013 13:00
9   4 2.4 1/13/2013 13:00
10  5 0.8 1/13/2013 13:00",header=TRUE)


df[with(df,order(ID,Date,Time)),]

请注意,我尚未将DateTime转换为适当的时间类,这样可以提供更好的结果。

答案 1 :(得分:4)

来自doBy包的

orderBy是另一种选择:

> library(doBy)
> orderBy(~ID+Date+Time, data=DF)