繁体   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