【发布时间】:2019-12-23 14:45:55
【问题描述】:
我正在尝试根据排名创建一个新列,每个月都会更改。以下是示例输入数据。
df <- data.frame(id=c(1,1,1,1,1,1,1,2,2,2,3,3,4),
rank=c(3,1,1,1,1,1,2,2,3,1,1,2,3),
dates=c('2019-06-15','2019-07-15','2019-08-15','2019-09-15','2019-10-15','2019-11-15','2019-12-15',
'2019-10-15','2019-11-15','2019-12-15',
'2019-11-15','2019-12-15','2019-12-15'))
这是预期的输出,我想要最新日期的行。
id rank dates new_col
1 2 2019-12-15 0
2 1 2019-12-15 0
3 2 2019-12-15 1
4 3 2019-12-15 0
new_col 表示rank 从 6 个月的回溯中有所增加?
例如,如果一行从 12 月开始为 2,但它们在 10 月行是 1,则
在 12 月的行中,我们可以输入 new_col= 1。
我们必须将回顾日期限制为 6 个月。
【问题讨论】:
-
从 6 个月的回溯中增加是什么意思?如果它低于上个月但高于 2 个月前,反之亦然怎么办?或者您是说正好回顾六个月,并且在那一天总是只有一行可以比较?
-
6 个月回顾意味着,仅检查日期中的 6 个月,如果超过 6 个月则忽略日期。
-
如果低于上个月,但高于 2 个月前。例如 1,3,2 (rank) 那么它应该是 0
-
而且,6 个月回顾意味着,检查排名仅 6 个月。例如 1,1,1,1,1,2(等级)然后 new_col 应该是 1
-
仅供参考,您的数据有点帮助(对于结构),但在这里真的没用。一组好的示例数据将包括不匹配您的窗口的条件。当您的窗口为 6 个月时,将所有内容都跨越 3 个月不会帮助您测试任何代码的有效性。
标签: r dplyr data.table plyr