我在下面有需要比较的工作时间数据-以日期和时间开始和停止。我首先提取每个时间部分的时间作为开始和结束变量,然后使用chron包将它们从因子数据更改为我可以更轻松比较的内容。
require(chron)
eg_data3 <- data.frame(
id = c('42', '42', '42', '42', '42'),
time_in = as.factor(c('11/5/2017 13:52', '11/4/2017 14:25', '11/5/2017 15:30', '11/5/2017 17:10', '11/6/2017 18:20')),
time_out = as.factor(c('11/5/2017 13:59', '11/4/2017 14:59', '11/5/2017 16:00', '11/5/2017 17:45', '11/6/2017 18:50')))
eg_data3$start_time <- substring(strptime(eg_data3$time_in, format = "%m/%d/%Y %H:%M"),12,19)
eg_data3$end_time <- substring(strptime(eg_data3$time_out, format = "%m/%d/%Y %H:%M"),12,19)
eg_data3$end_time <- chron(times = eg_data3$end_time)
eg_data3$start_time <- chron(times = eg_data3$start_time)
接下来,我生成另一个变量,该变量将停止时间1和开始时间2之间的差异进行比较,即第1行中的IE停止时间与第2行中的开始时间,以查看它们之间的差距。
require(dplyr)
eg_data3 <- eg_data3 %>% group_by(id) %>% mutate(diff_outX0_inX1 = start_time - lag(end_time))
执行此操作时,变量的格式为小数。我一生都无法将其显示为hh:mm:ss。我试过在chron中将out.format指定为hh:mm:ss,在提取之前和之后将time_in / time_out更改为数字和字符,并应用chron(times),之后更改diff_变量的格式,等等。
看起来很简单的问题-
如何将结果比较(diff_outX0_inX1)变量显示为时间,即hh:mm或hh:mm:ss?我知道在Excel中将小数天转换为分钟的公式,但是我不希望写出两步函数,因为我认为这是一个简单的格式设置问题。
感谢您的帮助。
编辑-被标记为重复...好。我问是否有一种方法不涉及编写函数。链接的答案涉及一个功能。第一条评论提供了一个简单明了的答案。我可以在评论中重现答案,我自己无法重现该功能,几乎没有帮助。我还添加了另一个不需要dplyr的解决方案。我在网上看到的任何内容都没有显示“仅用chron格式化结果”这样简单的内容。