我尝试在R中执行具有以下特征的排名或分组:
- 字段的内容:以下记录的“Object”等于字段的内容:“对象”
- 下一条记录的日期是连续的(对应于下一天)
示例数据:
| 目标|日期|
| --------------|--------------|
| 产品1| 2019 - 02 - 21|
| 产品1| 2023年2月2日|
| 产品1| 2023年2月21日|
| 产品中心PRODUCT 2| 2019 - 02 - 21 10:00:00|
| 产品中心PRODUCT 2| 2019 - 02 - 29 00:00:00|
| 产品中心PRODUCT 2| 2019 - 02 - 21 2019 - 02 - 21|
| 产品中心PRODUCT 2| 2019 - 02 - 21 2019 - 02 - 21|
| 产品中心PRODUCT 2| 2023年2月23日|
我使用了以下代码,但结果不正确:
library(plyr)
ddply(df, .(object), transform, rank = (seq_along(date)))
预期结果类似于下表:
| 目标|日期|等级|
| --------------|--------------|--------------|
| 产品1| 2019 - 02 - 21| 1|
| 产品1| 2023年2月2日|1|
| 产品1| 2023年2月21日|2|
| 产品中心PRODUCT 2| 2019 - 02 - 21 10:00:00| 1|
| 产品中心PRODUCT 2| 2019 - 02 - 29 00:00:00| 2|
| 产品中心PRODUCT 2| 2019 - 02 - 21 2019 - 02 - 21| 2|
| 产品中心PRODUCT 2| 2019 - 02 - 21 2019 - 02 - 21| 2|
| 产品中心PRODUCT 2| 2023年2月23日|3|
我感谢你帮助我解决这个问题。
1条答案
按热度按时间xzlaal3s1#
排名按“对象”分组并按“日期”排序。然后,所需的值基于前一行和当前行之间差距是否大于1天,则排名递增1。