如何在R中的排序日期中添加排名列?

时间:2015-04-10 19:06:10

标签: r sorting date rank

我在R:

中使用了这段代码

DF [与(DF,顺序(ID,日期)),]

为我的数据框中的每个不同ID排序日期值。现在我想在有序日期值旁边添加一个排名列(1到n),其中rank = 1是最早的日期,rank = n是每个不同ID的最近日期。

我看到有关添加排名列的问题,但在使用日期值排序时却没有。如何使用上面的代码添加此排名列?谢谢!

1 个答案:

答案 0 :(得分:2)

这是dplyr方法:

library(dplyr)

# Fake data
set.seed(5)
dat = data.frame(date=sample(seq(as.Date("2015-01-01"), as.Date("2015-01-31"), 
                                 "1 day"), 12),
                 ID=rep(LETTERS[1:3], c(2,6,4)))

dat %>% group_by(ID) %>%
  mutate(rank = rank(date)) %>%
  arrange(date)

         date ID rank
1  2015-01-07  A    1
2  2015-01-21  A    2
3  2015-01-03  B    1
4  2015-01-08  B    2
5  2015-01-14  B    3
6  2015-01-19  B    4
7  2015-01-20  B    5
8  2015-01-27  B    6
9  2015-01-06  C    1
10 2015-01-10  C    2
11 2015-01-22  C    3
12 2015-01-29  C    4