【发布时间】:2021-10-05 22:12:09
【问题描述】:
我有一个每小时观察的数据集,格式为%Y%m%d %H:%M,在不同的日子里,结果类似于2020-03-01 01:00:00。过滤器怎样才能过滤掉某个时间间隔?我的目标是保持 08:00 到 20:00 之间的观察。
【问题讨论】:
-
如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。
我有一个每小时观察的数据集,格式为%Y%m%d %H:%M,在不同的日子里,结果类似于2020-03-01 01:00:00。过滤器怎样才能过滤掉某个时间间隔?我的目标是保持 08:00 到 20:00 之间的观察。
【问题讨论】:
between(hour( your_date_value ), 8, 19)
【讨论】:
您可以从列中提取小时值并将行保持在 8 到 20 小时之间。
df$hour <- as.integer(format(df$datetime, '%H'))
result <- subset(df, hour >= 8 & hour <= 20)
result
# datetime hour
#9 2020-01-01 08:00:00 8
#10 2020-01-01 09:00:00 9
#11 2020-01-01 10:00:00 10
#12 2020-01-01 11:00:00 11
#13 2020-01-01 12:00:00 12
#14 2020-01-01 13:00:00 13
#15 2020-01-01 14:00:00 14
#16 2020-01-01 15:00:00 15
#17 2020-01-01 16:00:00 16
#18 2020-01-01 17:00:00 17
#19 2020-01-01 18:00:00 18
#20 2020-01-01 19:00:00 19
#21 2020-01-01 20:00:00 20
#33 2020-01-02 08:00:00 8
#34 2020-01-02 09:00:00 9
#35 2020-01-02 10:00:00 10
#...
#...
数据
df <- data.frame(datetime = seq(as.POSIXct('2020-01-01 00:00:00', tz = 'UTC'),
as.POSIXct('2020-01-10 00:00:00', tz = 'UTC'), 'hour'))
【讨论】: