【问题标题】:R "difftime" exhibits strange behaviorR“difftime”表现出奇怪的行为
【发布时间】:2016-07-01 13:35:56
【问题描述】:

我对“difftime”函数有点困惑。当我计算到 2016 年 3 月 27 日的时差时,一切正常。但是,一旦我在 2016 年 3 月 28 日、29 日、30 日或 31 日尝试,似乎就会出现问题:

> difftime("2016-03-27","1979-01-01", units="days")
Time difference of 13600 days
> difftime("2016-03-28","1979-01-01", units="days")
Time difference of 13600.96 days
> difftime("2016-03-31","1979-01-01", units="days")
Time difference of 13603.96 days

我可以通过将日期设置为 2016 年 3 月 27 日然后手动添加“缺失”天数来解决此问题,但我想知道该功能是否有问题......?我真的不知道我做错了什么,因为我只是更改了日期...

【问题讨论】:

    标签: r difftime


    【解决方案1】:

    2016-03-272016-03-28 的额外一天的原因是0.96 是由于夏令时开始:

    0.96 = 23 hours / 24 hours
    

    阅读this R Nabble blog,其中详细讨论了这个问题。

    【讨论】:

      【解决方案2】:

      没有问题,用as.Date转换的时候:

      difftime(as.Date("2016-03-28"), as.Date("1979-01-01"), units="days")
      
      # Time difference of 13601 days
      

      lubridate也没有问题:

      library(lubridate)   
      difftime(ymd("2016-03-28"), ymd("1979-01-01"), units="days")
      
      # Time difference of 13601 days
      

      【讨论】:

        猜你喜欢
        • 2022-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多