Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何计算R中两个日期之间的天数_R_Date_Datetime_Posixct - Fatal编程技术网

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

如何计算R中两个日期之间的天数,r,date,datetime,posixct,R,Date,Datetime,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)

我试图在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\u datetime
包含日期和时间,而
original\u 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
在从字符转换为日期时不使用时区

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

第一种格式中的时间成分可以忽略吗?消息说其中一种是'POSIxt',另一种是
Date
。如果它们是同一个类,您可以减去.DatamineR-这是一个有趣的想法。我将尝试按照我的定义删除它。asDate,看看这是否有帮助。我试过了,但仍然收到了同样的错误:警告消息:对于“-@Jazzmine,方法不兼容(“-.POSIXt”,“-.Date”):不要使用str,使用dput给我们一个可复制的示例无论如何,你可以使用
difftime
函数
diffice
as.Date.character
没有
tz
参数,该值完全被忽略。我不确定我是否会说,
as.Date
默认为UTC,但是R中的
Date
类完全不知道时区。谢谢,我在
tz
参数中添加了一些信息。
x <- as.POSIXct("2020-02-22 00:05", tz="CET")
as.Date(x)
as.Date(x, tz="UTC")
as.Date(x, tz="CET")