如何根据 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
我有一个大数据集,我想做的就是根据一天中的时间从中创建另一个数据集 - 所以所有介于(和包括)时间 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