2013-07-22 124 views
1

我在R中停留了一个函数。我有一个日期向量,我正在寻找间隔超过5天的日期对。通过不同时间表的差异查找日期

这里是我的矢量的一部分:

[1] "2011-10-06" "2011-09-28" "2011-09-20" "2011-08-29" "2011-09-09" "2011-08-16" 
    [7] "2011-08-05" "2011-07-28" "2011-07-18" "2011-07-06" "2011-06-27" "2011-06-17" 
    [13] "2011-06-03" "2011-05-22" "2011-05-02" "2011-05-12" "2011-04-21" "2011-04-11" 
    [19] "2011-04-01" "2011-03-23 

我知道如何计算时间差,在我的向量是这样的:

dates <- as.list(c("2011-10-06","2011-09-28","2011-09-20","2011-08-29","2011-09-09","2011-08-16","2011-08-05","2011-07-28","2011-07-18","2011-07-06","2011-06-27","2011-06-17","2011-06-03","2011-05-22","2011-05-02","2011-05-12","2011-04-21","2011-04-11","2011-04-01","2011-03-23")) 
diff(as.Date(unlist(dates))) 
#Time differences in days 
# [1] -8 -8 -22 11 -24 -11 -8 -10 -12 -9 -10 -14 -12 -20 10 -21 -10 -10 -9 

我要的是返回日期的夫妇,其填写这个标准。举个例子,这对夫妇“2011-08-29”,“2011-09-09”是第一对满足我的向量中“时差> 5天”标准的夫妇。

有没有办法返回计算的夫妇?也许使用向量中的项目数量?

感谢您的帮助!

回答

6

您DIFF向量的测试使用which拿到的位置,并以此来从原始数据挑选值:

sel <- which(diff(as.Date(unlist(dates)))>5) 

cbind(dates[sel],dates[sel+1]) 
    [,1]   [,2]   
[1,] "2011-08-29" "2011-09-09" 
[2,] "2011-05-02" "2011-05-12" 
+0

谢谢!它的工作很好!它确实很方便!我不得不使用cbind.data.frame来保存日期格式。顺便说一句,我怎么能在这个公式中设置一个新的标准?我也需要过滤所有的时间差异超过150,但是我尝试,我不能在同一时间设置两个标准。 – user2542995

+0

为什么你需要设置2个标准? > 150也是> 5。在任何情况下,您只需修改'which'中的逻辑语句以符合您的选择标准,很可能使用'&'结合2条标准。 – James

+0

是的,我犯了一个错误,我的意思是> 5和<150。现在正在工作。谢谢! – user2542995