Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.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 将时差比较为0并返回T/F的问题_R_Date_Data Manipulation - Fatal编程技术网

R 将时差比较为0并返回T/F的问题

R 将时差比较为0并返回T/F的问题,r,date,data-manipulation,R,Date,Data Manipulation,我有如下日期数据: date = {"2008-05-13", "2008-05-14", "2008-05-15", "2008-05-16", "2008-05-19", "2008-05-20", "2008-05-21", "2008-05-22", "2008-05-23", "2008-11-17"} 我想比较一下2008年05月13日和2008年05月13日的差值是否为0 我使用了以下代码:2008-05-13存储在日期[1,4]中的另一个数据 (dates[1,4] - dat

我有如下日期数据:

date = {"2008-05-13", "2008-05-14", "2008-05-15", "2008-05-16", "2008-05-19", "2008-05-20", "2008-05-21", "2008-05-22", "2008-05-23", "2008-11-17"}
我想比较一下2008年05月13日和2008年05月13日的差值是否为0

我使用了以下代码:2008-05-13存储在日期[1,4]中的另一个数据

(dates[1,4] - date)) != (dates[1,4] - dates[1,4])
但这种情况总是会让我回到真实的状态,我不知道为什么会发生这种情况。下面是我尝试过的另一个代码,它总是正确的

 (dates[1,4] - date)) != 0
如果有人能告诉我发生了什么,我将不胜感激。

请简单地尝试一下:

date =c("2008-05-13", "2008-05-14" ,"2008-05-15" ,"2008-05-16" ,"2008-05-19" ,"2008-05-20" ,"2008-05-21", "2008-05-22", "2008-05-23", "2008-11-17") 
as.Date(date) - as.Date('2008-05-13') == 0
[1]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

您忘记使用as.Date函数将日期设置为日期。此外,在R中用c定义一个向量。改用这个:

 date  <- as.Date("2008-05-13")
 dates <- as.Date(c("2008-05-13", "2008-05-14" ,"2008-05-15" ,"2008-05-16" ,"2008-05-19" ,"2008-05-20" ,"2008-05-21", "2008-05-22", "2008-05-23", "2008-11-17"))

dates - date != 0
[1] FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE

但是,只有当您确定所有日期的格式都与alistaire的注释所示格式相同时,才应使用第二种方法。

R中有一个名为difftime的函数。这是最简单的方法

> date = as.Date(c("2008-05-13", "2008-05-14" ,"2008-05-15" ,"2008-05-16" ,"2008-05-19" ,"2008-05-20" ,"2008-05-21", "2008-05-22", "2008-05-23", "2008-11-17"))
> compare <- as.Date("2008-05-13")
> 
> x <- difftime(date, compare,units = "days")
> x
Time differences in days
[1]   0   1   2   3   6   7   8   9  10 188

首先,您需要用c..,而不是{…}包装在R中。其次,在这个特定的示例中,您必须转换为带有日期的Date类,您甚至不需要通过as.Date进行显式转换,尽管它可能对您有意义!difftimedate,2008-05-13==0但当我尝试minabas.Datedates[1,4]-as.Datesp$date==0。。当sp$日期与2008-05-13日期不同时,这仍然返回me T假设您的sp$日期包含一个日期列表,包括2008-05-13,所有绝对差异的最小值将为零,表达式的计算结果将为T,不是预期的吗?您应该小心使用第二种方法;日期可以有很多不同的格式,如果不匹配,就会中断。最好解析到适当的类。
> date = as.Date(c("2008-05-13", "2008-05-14" ,"2008-05-15" ,"2008-05-16" ,"2008-05-19" ,"2008-05-20" ,"2008-05-21", "2008-05-22", "2008-05-23", "2008-11-17"))
> compare <- as.Date("2008-05-13")
> 
> x <- difftime(date, compare,units = "days")
> x
Time differences in days
[1]   0   1   2   3   6   7   8   9  10 188