首页 > 解决方案 > 在 DATE 和 ID 之后对变量进行排名

问题描述

我有下表:

    ID OP      DATE
1   1  A 2001-01-02
2   1  B 2015-04-25
3   2  A 2000-04-01
4   3  D 2014-04-07
5   4  C 2012-12-01
6   4  A 2005-06-16
7   4  D 2009-01-20
8   4  B 2009-01-20
9   5  A 2010-10-10
10  5  B 2003-11-09
11  6  B 2004-01-09

d <- wrapr::build_frame( "ID" , "OP", "DATE" | 1 , "A" , "2001-01-02" | 1 , "B" , "2015-04-25" | 2 , "A" , "2000-04-01" | 3 , "D" , "2014-04-07" | 4 , "C" , "2012-12-01" | 4 , "A" , "2005-06-16" | 4 , "D" , "2009-01-20" | 4 , "B" , "2009-01-20" | 5 , "A" , "2010-10-10" | 5 , "B" , "2003-11-09" | 6 , "B" , "2004-01-09" )

我想这样排序:

    ID   OP      DATE    RANK
1   1    A 2001-01-02    1
2   1    B 2015-04-25    2
3   2    A 2000-04-01    1
4   3    D 2014-04-07    1
5   4    A 2005-06-16    1
6   4    D 2009-01-20    2
7   4    B 2009-01-20    2
8   4    C 2012-12-01    3
9   5    B 2003-11-09    1
10  5    B 2010-10-10    2
11  6    B 2004-01-09    1

也就是说,每个 OP 都应该在 ID 下分组,并按 DATE 排序,然后按 DATE 排序。

最好的问候,汉斯

标签: r

解决方案


我们可以用dense_rank

library(dplyr)
d %>%
   group_by(ID) %>%
   mutate(Rank = dense_rank(DATE))

推荐阅读