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