r - 将订单号添加到重复的行
问题描述
我有以下数据:
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
这该怎么做?非常感谢你。
解决方案
您可以使用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
推荐阅读
- flutter - 从数组中获取所有行和列
- shell - grep 两个字符串,但前提是第二个字符串在下一行
- android - 插入前房间数据库检查条件
- python - 有没有缩短这个的程序?
- qt - 如何在 QML 中创建动态委托?
- android-studio - 保存由 sharedprefrence 保存的 videoView 的最后一个位置并从最后一个位置开始(android studio)
- linux - Liquidsoap:如何从播放列表中删除曲目?
- xamarin - Xamarin Forms OnConfigurationChanged - System.ArgumentNullException:值不能为空参数名称:可枚举
- google-apps-script - 如何使用 Google Apps 脚本更新谷歌表格中的单元格
- python - 通过 TCP 套接字发送大图像文件的二进制数据