【问题标题】:Remove time periods from daily data从每日数据中删除时间段
【发布时间】:2021-10-05 22:12:09
【问题描述】:

我有一个每小时观察的数据集,格式为%Y%m%d %H:%M,在不同的日子里,结果类似于2020-03-01 01:00:00。过滤器怎样才能过滤掉某个时间间隔?我的目标是保持 08:00 到 20:00 之间的观察。

【问题讨论】:

标签: r dplyr lubridate


【解决方案1】:
between(hour( your_date_value ), 8, 19)

【讨论】:

  • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因。
【解决方案2】:

您可以从列中提取小时值并将行保持在 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'))

【讨论】:

    猜你喜欢
    • 2018-05-08
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 2016-06-14
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    相关资源
    最近更新 更多