如何计算时差,并将其加到开始时间?

时间:2019-06-26 16:14:47

标签: r datetime plot linear-regression

我正在尝试在两个时间点(显示为一天中的时间)之间产生线性回归模型-说“已调度”和“已接收”-以观察一天中是否有特定时间(或时间跨度) )所发货的物品会影响其到达时间。 例如,如果某个物品在午餐时间附近寄出,它会比早上寄出的时间晚吗?

我的数据框看起来像这样:

                Dispatched             Received
52756  2018-11-05 11:41:00  2018-11-05 11:49:00
52764  2018-10-05 08:03:00  2018-10-05 08:03:00
52772  2018-08-24 07:36:00  2018-08-24 07:37:00
52780  2018-07-26 07:37:00  2018-07-26 07:40:00
52788  2018-07-12 08:00:00  2018-07-12 08:01:00
52796  2018-05-30 12:54:00  2018-05-31 07:25:00
52805  2018-05-30 12:54:00  2018-05-31 07:25:00
52814  2018-06-14 09:05:00  2018-06-14 09:07:00
52820  2018-06-14 09:05:00  2018-06-14 09:07:00
52826  2018-06-14 09:05:00  2018-06-14 09:07:00
52829  2018-06-14 09:05:00  2018-06-14 09:07:00
52835  2018-06-18 11:00:00  2018-06-19 08:06:00
52843  2018-03-12 11:34:00  2018-03-13 09:53:00
52851  2018-07-03 13:14:00  2018-07-03 13:15:00
52853  2018-07-03 13:14:00  2018-07-03 13:15:00

这些日期已经作为POSIXct()对象。

接下来,由于我对这一天不感兴趣,因此只用时间创建了2个额外的列:

                Dispatched             Received Disp_time Rcvd_time
52756  2018-11-05 11:41:00  2018-11-05 11:49:00  11:41:00  11:49:00
52764  2018-10-05 08:03:00  2018-10-05 08:03:00  08:03:00  08:03:00
52772  2018-08-24 07:36:00  2018-08-24 07:37:00  07:36:00  07:37:00
52780  2018-07-26 07:37:00  2018-07-26 07:40:00  07:37:00  07:40:00
52788  2018-07-12 08:00:00  2018-07-12 08:01:00  08:00:00  08:01:00
52796  2018-05-30 12:54:00  2018-05-31 07:25:00  12:54:00  07:25:00
52805  2018-05-30 12:54:00  2018-05-31 07:25:00  12:54:00  07:25:00
52814  2018-06-14 09:05:00  2018-06-14 09:07:00  09:05:00  09:07:00
52820  2018-06-14 09:05:00  2018-06-14 09:07:00  09:05:00  09:07:00
52826  2018-06-14 09:05:00  2018-06-14 09:07:00  09:05:00  09:07:00
52829  2018-06-14 09:05:00  2018-06-14 09:07:00  09:05:00  09:07:00
52835  2018-06-18 11:00:00  2018-06-19 08:06:00  11:00:00  08:06:00
52843  2018-03-12 11:34:00  2018-03-13 09:53:00  11:34:00  09:53:00
52851  2018-07-03 13:14:00  2018-07-03 13:15:00  13:14:00  13:15:00
52853  2018-07-03 13:14:00  2018-07-03 13:15:00  13:14:00  13:15:00

因此,如果时差在同一天之内,我可以绘制(ggplot2::ggplot())并计算出回归曲线(ggpubr::stat_cor())没问题。

但是,例如,如果您查看项目“ 52796”,“ 52805”,“ 52835”和“ 52843”,则它们会在一天内发送,而在第二天发送。这就是绘图(Disp_time与Rcvd_time)时的问题。

因此,我正在考虑通过简单地将时差添加到“ Rcvd_time”(即使超过24小时)来克服此问题的方法。例如,这些行:

                Dispatched             Received Disp_time Rcvd_time
52796  2018-05-30 12:54:00  2018-05-31 07:25:00  12:54:00  07:25:00
52805  2018-05-30 12:54:00  2018-05-31 07:25:00  12:54:00  07:25:00
52835  2018-06-18 11:00:00  2018-06-19 08:06:00  11:00:00  08:06:00
52843  2018-03-12 11:34:00  2018-03-13 09:53:00  11:34:00  09:53:00

可以表示为:

                Dispatched             Received Disp_time Rcvd_time
52796  2018-05-30 12:54:00  2018-05-31 07:25:00  12:54:00  30:29:00
52805  2018-05-30 12:54:00  2018-05-31 07:25:00  12:54:00  30:29:00
52835  2018-06-18 11:00:00  2018-06-19 08:06:00  11:00:00  32:06:00
52843  2018-03-12 11:34:00  2018-03-13 09:53:00  11:34:00  33:19:00

关于如何执行操作的任何想法? 预先感谢!

1 个答案:

答案 0 :(得分:1)

您可能想看一下difftime函数。

Dispatched <- as.POSIXct('2018-05-30 12:54:00')
Received <- as.POSIXct('2018-05-31 07:25:00')

time_delta <- difftime(Received, Dispatched, units = 'minutes')
time_delta