[英]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.