【问题标题】:difftime in R generate NA valuesR中的difftime生成NA值
【发布时间】:2018-03-25 15:53:45
【问题描述】:
as.numeric(difftime(
strptime("12:00 AM", "%I:%M %p" ),
strptime("2:00 AM", "%I:%M %p" ),
 units='hours'))

结果:不适用。
我正在尝试计算时间差,但有些行生成的 NA 值真的很烦人,这里有什么问题吗?

【问题讨论】:

标签: r time strptime difftime


【解决方案1】:

要复制,请执行以下操作:

as.numeric(difftime(
 strptime("12:00 AM", "%I:%M %p", tz = "Europe/Brussels" ),
 strptime("2:00 AM", "%I:%M %p", tz = "Europe/Brussels" ),
 units='hours'))
# [1] NA

鉴于您遇到的行为,我预计您会遇到夏令时问题,因为您所在的语言环境在 3 月的最后一个星期日更改了夏令时。 strptimedifftime 没有“滚动”参数,因此您必须手动将时区设置为该时间段内不处于时间变化中间的位置(如果您想考虑它,增加一个小时)。

as.numeric(difftime(
 strptime("12:00 AM", "%I:%M %p", tz = "UTC" ),
 strptime("2:00 AM", "%I:%M %p", tz = "UTC" ),
 units='hours'))
# [1] -2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 1970-01-01
    相关资源
    最近更新 更多