这是我的代码:
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
c
,f
和h
的值为:
> 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)。有人可以帮我解决这个问题。
答案 0 :(得分:1)
为了避免在评论中回答:
如上所述J_F,您需要使用intersect
中的lubridate
函数。万一因为需要intersect
和lubridate
中的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