2014-06-24 42 views
0

我希望能够比较超过30个变量的2个变量的值。 示例数据应如下所示:如何将一行与下一行进行比较?

A, B 
0, 2014-05-01 13 
30, 2014-05-02 14 
30, 2014-05-02 15 
60, 2014-05-02 15 
30, 2014-05-03 08 
60, 2014-05-03 09 

A是一个数字。 B是格式 - %Y-%m-%d%H中的时间戳。 现在,我想提取从一行到下一行的日期相同的行。而且,小时在上面一排的一小时内。 (因此,对于第i行,如果日期是5月14日和9日,并且第i + 1行日期是5月14日和小时是8或9或10.然后,它将在单独的数据框中被拉出, 。行满足条件

上运行它上面的数据,结果将是

30, 2014-05-02 15 
60, 2014-05-02 15 
60, 2014-05-03 09 
+0

如果它有助于提高清晰度,请随时编辑该问题。谢谢 – asarapure

+2

那么到目前为止你到底尝试了什么? – jonrsharpe

+0

拉出到单独的data.frame如何?每个块有一个?或者只是一个data.frame? – MrFlick

回答

1

这是lubridate工作:

dat <- data.frame(A = c(0,30,30,60,30,60), B = 
c("2014-05-01 13","2014-05-02 14","2014-05-02 15","2014-05-02 15","2014-05-03 08","2014-05-03 09"), 
stringsAsFactors = FALSE) 

library(dplyr) 
library(lubridate) 

您可以使用lag拔出以前值为B,并使用dhours将其提前一小时:

dat %>% 
    mutate(B = ymd_h(B), 
     close = B <= lag(B + dhours(1))) %>% 
    filter(close) 

A     B close 
1 30 2014-05-02 15:00:00 TRUE 
2 60 2014-05-02 15:00:00 TRUE 
3 60 2014-05-03 09:00:00 TRUE 
+0

我不知道哈德利是如何意识到这种功能的需要。他是否从另一种语言包装了他吸引灵感的包装? – Vlo

+0

@Vlo也许他用黑暗的艺术!虽然我经常想知道用户是否会发现他和他的开发人员从未想象过的应用程序。 – AndrewMacDonald

相关问题