簡體   English   中英

R中的difftime計算不正確

[英]difftime in R is not calculating correctly

我試圖找出兩個日期之間的時差,以小時為單位,而對於超過一天的時間間隔中出現的時差,我得到的數字實在令人難以置信和錯誤。

這是數據示例:

     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"

先感謝您!

看來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")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM