如何根据 r 中的一天中的时间对数据帧进行子集化?

How can I subset a dataframe based on time of day in r?

我有一个大数据集,我想做的就是根据一天中的时间从中创建另一个数据集 - 所以所有介于(和包括)时间 04:00 和 [=23= 之间的行].日期列是 POSIXlt。数据集的一个小样本如下:

ID Street Date
1 Saints Road 2020-12-31 23:00:00
2 Saints Road 2021-01-01 03:00:00
3 Saints Road 2021-01-01 04:00:00
4 Saints Road 2021-07-06 22:00:00

是否有一种简单的方法可以 select 行来生成仅包含上述时间范围内的行的数据集(如下例所示)?

ID Street Date
2 Saints Road 2021-01-01 03:00:00
3 Saints Road 2021-06-01 04:00:00

提前致谢。

使用lubridate

 library(lubridate)
    df <- data.frame(ID = c(1,2,3,4),Street = c("Saints Road","Saints Road","Saints Road","Saints Road"),Date = c("2020-12-31 23:00:00","2021-01-01 03:00:00","2021-06-01 04:00:00","2021-07-06 22:00:00"))
    df$Date <- as.POSIXlt(df$Date)

df %>% 
  filter(hour(Date) >= 3 & hour(Date) <= 21)

输出:

 ID      Street                Date
1  2 Saints Road 2021-01-01 03:00:00
2  3 Saints Road 2021-06-01 04:00:00