2014-06-24 45 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

相關問題