2

我在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
4

2 回答 2

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)),]

请注意,我还没有在这里转换Date并转换Time为适当的时间课程,这将产生更好的结果。

于 2013-01-14T09:51:15.327 回答
4

orderBy来自 doBy 包是另一种选择:

> library(doBy)
> orderBy(~ID+Date+Time, data=DF)
于 2013-01-14T10:32:16.673 回答