我希望能够比较超过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,如果日期是14日可能和上午9点。而行i + 1日期是14日可能而小时是8或9或10.然后,它将被拉出一个单独的数据框,每个符合条件的行。
在上述数据上运行,结果将是
30, 2014-05-02 15
60, 2014-05-02 15
60, 2014-05-03 09
答案 0 :(得分: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