gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:33:54 24 4
gpt4 key购买 nike

我正在尝试减去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" ...

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

有没有办法减去它们?

我试图用以下语句减去:
standard_data_4testing$start_datetime - standard_data_4testing$original_installdate

但是我得到这个错误:

Warning message: Incompatible methods ("-.POSIXt", "-.Date") for "-"



在它打印出一些数据之后:

[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不使用时区。

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
在将Dates从 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")

关于r - 如何计算R中两个日期之间的天数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36224714/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com