从开始时间和结束时间推导出时间

问题描述 投票:0回答:1

我有一个采用以下结构的数据框:

start_time <- c("09:00:00.000", "09:23:00.000", "09:23:00.000", "15:37:00.000")
end_time <- c("09:50:00.000", "09:50:00.000","09:50:00.000","16:10:00.000")
CO.TimeTaken <- data.frame(start_time, end_time)

> CO.TimeTaken

   start_time     end_time
1 09:00:00.000 09:50:00.000
2 09:23:00.000 09:50:00.000
3 09:23:00.000 09:50:00.000
4 15:37:00.000 16:10:00.000

我想改变并创建一个名为

TimeTaken
的新列,它是一个数字列,其中包含基于
end_time
减去
start_time

的分钟值

我尝试使用

lubridate
包来提取分钟数,但输出不是我想要的。这些是我使用的步骤。

library(lubridate)
CO.TimeTaken$start_time <- hms(as.character(CO.TimeTaken$start_time))
CO.TimeTaken$end_time <- hms(as.character(CO.TimeTaken$end_time))
CO.TimeTaken$TimeTaken <- CO.TimeTaken$end_time - CO.TimeTaken$start_time

上述代码的输出

> CO.TimeTaken
  start_time   end_time  TimeTaken
1   9H 0M 0S  9H 50M 0S     50M 0S
2  9H 23M 0S  9H 50M 0S     27M 0S
3  9H 23M 0S  9H 50M 0S     27M 0S
4 15H 37M 0S 16H 10M 0S 1H -27M 0S

我应该怎样做才能达到上述结果?

r lubridate
1个回答
0
投票

一个选择是执行以下操作,但我不确定这是否是您想要的:

> CO.TimeTaken |> 
+   mutate(
+     TimeTaken = as.numeric(difftime(as.POSIXct(end_time, format = "%H:%M:%OS"), 
+                                     as.POSIXct(start_time, format = "%H:%M:%OS"), 
+                                     units = "mins"))
+   )
    start_time     end_time TimeTaken
1 09:00:00.000 09:50:00.000        50
2 09:23:00.000 09:50:00.000        27
3 09:23:00.000 09:50:00.000        27
4 15:37:00.000 16:10:00.000        33
© www.soinside.com 2019 - 2024. All rights reserved.