如何在R中使用具有日期范围的intersect()函数

时间:2016-10-26 05:44:39

标签: r

这是我的代码:

a<-"2015-12-13 09:00:00"           
b<-"2015-12-13 12:00:00"
c<-interval(a,b)

d<-"2015-12-13 09:00:00"           
e<-"2015-12-13 12:00:00"
f<-interval(d,e)
h<-intersect(c,f)
h

cfh的值为:

> h
[1] 10800
> c
[1] 2015-12-13 09:00:00 UTC--2015-12-13 12:00:00 UTC
> f
[1] 2015-12-13 09:00:00 UTC--2015-12-13 12:00:00 UTC
> 

但是,当我给出不同的日期/时间范围时。交叉功能不起作用。例如: 如果我将变量d和e的时间从09:00:00-12:00:00更改为09:00:00 - 10:00:00,我希望intersect函数能够为我提供1小时的常用时间。

a<-"2015-12-13 09:00:00"           
b<-"2015-12-13 12:00:00"
c<-interval(a,b)

d<-"2015-12-13 09:00:00"           
e<-"2015-12-13 10:00:00"
f<-interval(d,e)
h<-intersect(c,f)
h

输出:

numeric(0)
> c
[1] 2015-12-13 09:00:00 UTC--2015-12-13 12:00:00 UTC
> f
[1] 2015-12-13 09:00:00 UTC--2015-12-13 10:00:00 UTC

我得到数字(0)。有人可以帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

为了避免在评论中回答:

如上所述J_F,您需要使用intersect中的lubridate函数。万一因为需要intersectlubridate中的dplyr而遇到问题,可以使用双冒号::

双冒号::用于指定从哪个包中调用函数并克服了屏蔽。因此,在您的代码中:

a<-"2015-12-13 09:00:00"           
b<-"2015-12-13 12:00:00"
c<-interval(a,b)

d<-"2015-12-13 09:00:00"           
e<-"2015-12-13 10:00:00"
f<-interval(d,e)
h<-lubridate::intersect(c,f)
h

[1] 2015-12-13 09:00:00 UTC--2015-12-13 10:00:00 UTC