如何计算R中两个日期之间的天数

Jaz*_*ine 3 datetime r date posixct

我正在尝试减去R中的两个日期。这是通过structure命令的两个日期:

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" ...
Run Code Online (Sandbox Code Playgroud)

我用as.DateR中的函数创建了这两个函数,但是start_datetime具有日期和时间,并且original_installdate在原始数据中仅具有日期,如上所述。

有没有办法减去它们?

我试图用以下语句减去:

standard_data_4testing$start_datetime - standard_data_4testing$original_installdate
Run Code Online (Sandbox Code Playgroud)

但是我得到这个错误:

警告消息:“-”的方法不兼容(“ -.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“不适用

我也尝试过使用POSIXct,但收到类似的错误。

尽管它们的组成有所不同,有什么办法可以减去两个日期?

谢谢你的帮助

sna*_*aut 6

首先将两个日期都转换为POSIXct该类。确保在同一时区中进行计算,POSIXt类默认为您的语言环境时区,as.Date默认为UTC。

test1 <- as.Date("2016-01-01", tz="UTC")
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
Run Code Online (Sandbox Code Playgroud)

  • `as.Date.character` 没有 `tz` 参数,该值被完全忽略。我不确定我是否会说“as.Date”默认为 UTC,而是 R 中的“Date”类完全不知道时区。 (2认同)