【问题标题】:difftime in R is not calculating correctlyR中的difftime计算不正确
【发布时间】:2018-11-04 04:03:03
【问题描述】:

我试图以小时为单位找出两个日期之间的差异,对于超过一天的时间差异,我得到了非常离谱和不正确的数字。

以下是数据示例:

     Observation    Status       DateTime                                
     1               Active     2016-11-04 22:32:49                 
     2              Inactive    2016-11-05 08:30:56   

我正在运行这个命令:

      getDiff <- function(x) {
      difftime(shift(x, fill = NA, type = "lead"), x, units = "hours")
       }

   diff_result <- dataframe[, time.diff := ifelse(Status == "Active", 
                                         getDiff(DateTime), NA)]

我得到以下输出:

   Observation    Status       DateTime                   Time.diff             
   1               Active     2016-11-04 22:32:49       8757.884          
   2              Inactive    2016-11-05 08:30:56   

此命令适用于所有其他不会在不同日期发生的差异。 正确答案应该是 10 小时左右,不超过 8000 小时。

还有,

    > class(DataFrame$DateTime)
   [1] "POSIXct" "POSIXt"

提前谢谢你!

【问题讨论】:

    标签: r date data-science posixct difftime


    【解决方案1】:

    看来 OP 没有正确转换 DateTime 格式。 8757 小时相当于大约 1 年。因此,DateTime 的格式可能有误。

    使用我最后的 OP 数据,结果看起来不错。

    library(data.table)
    
    getDiff <- function(x) {
      difftime(shift(x, fill = NA, type = "lead"), x, units = "hours")
    }
    setDT(df)
    diff_result <- df[, time.diff := ifelse(Status == "Active", 
                                                   getDiff(DateTime), NA)]
    
    
    diff_result
    #    Observation   Status            DateTime time.diff
    # 1:           1   Active 2016-11-04 22:32:49  9.968611
    # 2:           2 Inactive 2016-11-05 08:30:56        NA
    # 
    

    数据:

    df <- read.table(text = 
    "Observation    Status       DateTime                                
    1               Active     '2016-11-04 22:32:49'                 
    2              Inactive    '2016-11-05 08:30:56'",
    header = TRUE, stringsAsFactors = FALSE)
    
    df$DateTime = as.POSIXct(df$DateTime, format = "%Y-%m-%d %H:%M:%S")
    

    【讨论】:

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