【发布时间】:2017-12-17 13:10:29
【问题描述】:
我有一个包含两个文本列的数据框,它们本质上是时间戳列,即 BEFORE 和 AFTER,格式为 12/29/2016 4:29:00 PM。我想比较每行的 BEFORE 和 AFTER 时间之间的差距是否超过 5 分钟。 R中的哪个包允许时间戳之间的减法?
【问题讨论】:
我有一个包含两个文本列的数据框,它们本质上是时间戳列,即 BEFORE 和 AFTER,格式为 12/29/2016 4:29:00 PM。我想比较每行的 BEFORE 和 AFTER 时间之间的差距是否超过 5 分钟。 R中的哪个包允许时间戳之间的减法?
【问题讨论】:
不需要额外的包,使用base R可以实现日期时间比较。
首先将您的角色强制为有效的日期时间结构。这里我使用POSIXct:
d1= as.POSIXct("12/29/2016 4:29:00 PM",format="%m/%d/%Y %H:%M:%S")
d2= as.POSIXct("12/30/2016 5:29:00 PM",format="%m/%d/%Y %H:%M:%S")
那么你可以使用difftime来获得分钟的差异:
difftime(d1,d2,units="mins")
请注意,所有这些函数都是矢量化的,因此相同的代码将适用于矢量。
为了照顾 PM/AM,我们应该将 %p 添加到应该与 %I 而不是 %H 结合使用的格式中:
d1= as.POSIXct("12/28/2016 11:53:00 AM",
format="%m/%d/%Y %I:%M:%S %p")
d2= as.POSIXct("12/28/2016 12:03:00 PM",
format="%m/%d/%Y %I:%M:%S %p")
difftime(d2,d1,units="mins")
## Time difference of 10 mins
有关日期/时间格式的更多帮助,您可以阅读?strptime。
【讨论】: