时间差计算考虑使用R午夜时间

  • 本文关键字:午夜 时间 计算 时间差 r
  • 更新时间 :
  • 英文 :


我正在处理一个问题,我需要计算分钟时间的时间差。我在列中具有hh:mm:ss格式的时间值(超过28,000个值(。

我一直在使用以下函数来计算时间差。

tdiff <- dt[dt, Time_Diff := c(abs(diff(as.numeric(Time))),0.30), Student_ID]

其中 dt -->是有序数据表,而 0.30 --> 30分钟分配给学生的最后一项活动。

这有效,但没有考虑午夜时间。

感谢@niko的帮助和这个问题得到了解决,但是应将每个学生的最后一个活动分配给每个学生的" 30分钟"。在这个方向上的任何帮助将不胜感激。谢谢。

预期的输出在下面描述

S_Id    Date            Time           Time_Diff      Time_Diff(minutes)
A       10/08/2018      23:49:00       00:01:00       1 minutes 
A       10/08/2018      23:50:00       00:09:00       9
A       10/08/2018      23:59:00       00:02:00       2
A       10/09/2018      00:01:00       00:09:00       9
A       10/09/2018      00:10:00       08:02:00       482
A       10/09/2018      08:12:00       04:08:00       248
A       10/09/2018      12:20:00       10:01:00       601
A       10/09/2018      22:21:00       01:35:00       95
A       10/09/2018      23:56:00       00:09:00       9
A       10/10/2018      00:05:00       00:05:00       5
A       10/10/2018      00:10:00       00:02:00       2
A       10/10/2018      00:12:00       00:30:00       30
B       10/08/2018      23:49:00       00:01:00       1
B       10/08/2018      23:50:00       00:09:00       9
B       10/08/2018      23:59:00       00:02:00       2
B       10/09/2018      00:01:00       00:09:00       9
B       10/09/2018      00:10:00       08:02:00       482
B       10/09/2018      08:12:00       04:08:00       248
B       10/09/2018      12:20:00       10:01:00       601
B       10/09/2018      22:21:00       01:35:00       95
B       10/09/2018      23:56:00       00:09:00       9
B       10/10/2018      00:05:00       00:05:00       5
B       10/10/2018      00:10:00       00:02:00       2
B       10/10/2018      00:12:00       00:30:00       30
C       10/08/2018      23:49:00       00:01:00       1
C       10/08/2018      23:50:00       00:09:00       9
C       10/08/2018      23:59:00       00:02:00       2
C       10/09/2018      00:01:00       00:09:00       9
C       10/09/2018      00:10:00       08:02:00       482
C       10/09/2018      08:12:00       04:08:00       248
C       10/09/2018      12:20:00       10:01:00       601
C       10/09/2018      22:21:00       01:35:00       95
C       10/09/2018      23:56:00       00:09:00       9
C       10/10/2018      00:05:00       00:05:00       5
C       10/10/2018      00:10:00       00:02:00       2
C       10/10/2018      00:12:00       00:30:00       30

尝试将datetime转换为POSIXct

# dt is your data frame
diff(as.POSIXct(paste(dt$Date, dt$Time), format='%m/%d/%Y %H:%M:%S')) # or '%d/%m/%Y %H:%M:%S'

应该解决这个问题。

数据

dt <- structure(list(Date = c("10/08/2018", "10/08/2018", "10/08/2018", "10/09/2018", "10/09/2018", 
                              "10/09/2018", "10/09/2018", "10/09/2018", "10/09/2018", "10/10/2018", 
                              "10/10/2018", "10/10/2018"), 
                 Time = c("23:49:00", "23:50:00", "23:59:00", "00:01:00", "00:10:00", "08:12:00", 
                          "12:20:00", "22:21:00", "23:56:00", "00:05:00", "00:10:00", "00:12:00")), 
            class = "data.frame", row.names = c(NA, -12L))

最新更新