首页 > 解决方案 > 将订单号添加到重复的行

问题描述

我有以下数据:

ID date
1  18/08/2020
1  19/08/2020
1  17/08/2020
2  15/07/2020
2  14/07/2020
3  19/08/2020
3  18/08/2020
3  17/08/2020

我想按每个 ID 中的日期对数据进行排序,并添加一个新列来显示每个 ID 的日期顺序。数据应如下所示

ID date        order
1  18/08/2020   2
1  19/08/2020   3
1  17/08/2020   1
2  15/07/2020   2
2  14/07/2020   1
3  19/08/2020   3
3  18/08/2020   2
3  17/08/2020   1

这该怎么做?非常感谢你。

标签: r

解决方案


您可以使用dense_rank来自dplyr

library(dplyr)

df %>%
  mutate(date = lubridate::dmy(date)) %>%
  group_by(ID) %>%
  mutate(order = dense_rank(date))

#     ID date       order
#  <int> <date>     <int>
#1     1 2020-08-18     2
#2     1 2020-08-19     3
#3     1 2020-08-17     1
#4     2 2020-07-15     2
#5     2 2020-07-14     1
#6     3 2020-08-19     3
#7     3 2020-08-18     2
#8     3 2020-08-17     1

推荐阅读