【发布时间】:2019-07-22 08:49:14
【问题描述】:
我有一个表格,每个客户的订单都带有时间戳。我想知道在下一个订单后在时间范围x 内发生了哪些订单,一旦时间范围结束,就从时间范围x 重新开始下一个订单。新列应始终说明哪一个是第一个订单。
最好看下面的例子。
我已经用next尝试了一些for loops,但根本无法使用。
数据如下:
x <- data.frame("Customer" =c(123,123,123,123,123,123,123,567), "Order_nr" = c(1,2,3,4,5,6,7,1), "Order_datetime" = c('2018-11-24 00:00:25','2018-11-24 15:58:23','2018-11-24 19:10:29','2018-11-24 21:29:04','2018-11-24 22:03:59','2018-11-24 22:26:59','2018-11-24 22:36:13','2018-11-24 12:00:55'))
x
| Customer | Order_nr | Order_datetime|
| ------------- |:-------------:| -----:|
| 123 | 1 | 2018-11-24 00:00:25 |
| 123 | 2 | 2018-11-24 15:58:23 |
| 123 | 3 | 2018-11-24 19:10:29 |
| 123 | 4 | 2018-11-24 21:29:04 |
| 123 | 5 | 2018-11-24 22:03:59 |
| 123 | 6 | 2018-11-24 22:26:59 |
| 123 | 7 | 2018-11-24 22:36:1 |
| 567 | 1 | 2018-11-24 12:00:55 |
如果我想知道1小时内的订单,我想在1h bundle first order列中得到结果,如果是3小时,它应该是3h bundle first order列的结果
| Customer | Order_nr | Order_datetime| 3h bundle first order| 3h bundle first order|
| ------------- |:-------------:| -----:|-----:|
| 123 | 1A | 2018-11-24 00:00:25 |1A |1A|
| 123 | 2A | 2018-11-24 15:58:23 |2A |2A|
| 123 | 3A | 2018-11-24 19:10:29 |3A |3A|
| 123 | 4A | 2018-11-24 21:29:04 |4A |3A|
| 123 | 5A | 2018-11-24 22:03:59 |4A |3A|
| 123 | 6A | 2018-11-24 22:26:59 |4A |4A|
| 123 | 7A | 2018-11-24 22:36:1 |5A |4A|
| 567 | 1B | 2018-11-24 12:00:55 |1B |1B|
所以我需要知道订单 4A、5A 和 6A 发生在从订单 4A 开始的 1h 内,例如 1h bundle first order。
【问题讨论】: