簡體   English   中英

如何計算R中兩個日期之間的天數

[英]How to calculate number of days between two dates in R

我試圖在 R 中減去兩個日期。這些是通過結構命令的兩個日期:

str(standard_data_4testing$start_datetime)
 POSIXct[1:489124], format: "2016-02-01 00:38:49" "2016-02-01 07:48:53" "2016-02-01 08:32:08" "2016-02-01 11:21:13" ...

str(standard_data_4testing$original_installdate)
 Date[1:489124], format: "2015-10-15" "2015-10-15" "2015-10-15" "2016-01-29" "2016-01-29" "2016-01-29" ...

我在 R 中使用as.Date函數創建了兩者,但start_datetime具有日期和時間,而original_installdate僅在原始數據中具有日期,如上所示。

有沒有辦法減去它們?

我嘗試使用以下語句進行減法:

standard_data_4testing$start_datetime - standard_data_4testing$original_installdate

但我收到此錯誤:

警告消息:“-”的不兼容方法(“-.POSIXt”、“-.Date”)

在它打印出一些數據之后:

[6049] "2016-02-01 09:48:44 UTC" "2016-02-01 07:24:08 UTC" "2016-02-01 09:02:33 UTC" "2016-02-01 09: 14:29 UTC" [6053] "2016-02-01 10:49:46 UTC" "2016-02-01 19:07:52 UTC" "2016-02-01 02:39:04 UTC" "2016- 02-01 03:59:29 UTC" [6057] "2016-02-01 07:13:05 UTC" "2016-02-01 07:58:50 UTC" NA

我也嘗試過使用 POSIXct 但收到了類似的錯誤。

盡管它們的組成部分存在差異,但有什么方法可以減去這兩個日期?

謝謝你的幫助

首先將兩個日期轉換為POSIXct類。 確保在同一時區中進行計算,POSIXt 類默認為您的語言環境時區, as.Date從字符轉換為日期時, as.Date不使用時區。

test1 <- as.Date("2016-01-01")
test2 <- strptime("2016-01-02", format="%Y-%m-%d", tz="UTC")
difftime(as.POSIXct(test2), as.POSIXct(test1, tz="UTC"), units="days")
# Time difference of 1 days

將日期從POSIXct轉換為Date始終明確地將時區作為參數,因為as.Date.POSIXct似乎忽略了POSIXct對象中的時區,如您在此示例中看到的(這可能取決於平台):

x <- as.POSIXct("2020-02-22 00:05", tz="CET")
as.Date(x)
as.Date(x, tz="UTC")
as.Date(x, tz="CET")

暫無
暫無

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

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