按小时过滤的时间序列,以R为单位

问题描述 投票:0回答:1

我有一个数据系列,其数据如下所示:

2020-01-02 09:30:00 1 gdss
2020-01-02 10:00:00 2 jojo
2020-01-02 10:30:00 3 hutr 
2020-01-02 11:00:00 2 uff
2020-01-02 11:30:00 4 wwe
2020-01-02 12:00:00 1 vev
2020-01-02 12:30:00 2 wow

它具有更多列,但并不重要。但是,整个集合的确有十多年的30分钟数据。

我想每天过滤某些小时,但无法正确处理。我正在使用lubridate

例如,获得此间隔:

2020-01-02 10:30:00 3 hutr 
2020-01-02 11:00:00 2 uff
2020-01-02 11:30:00 4 wwe
2020-01-02 12:00:00 1 vev

我尝试了以下操作:

with( load_dataset , load_dataset[ (hour(load_dataset$Date) == 10 & minute(load_dataset$Date) == 30) | (hour(load_dataset$Date) == 12 & minute(load_dataset$Date) < 30) , ] )

这仅给出第一个和最后一个。

with( load_dataset , load_dataset[ (hour(load_dataset$Date) == 10 & minute(load_dataset$Date) == 30) & (hour(load_dataset$Date) == 12 & minute(load_dataset$Date) < 30) , ] )

这给出零行。

with( load_dataset , load_dataset[ (hour(load_dataset$Date) >= 10 & minute(load_dataset$Date) == 30) & (hour(load_dataset$Date) <= 12 & minute(load_dataset$Date) <= 30) , ] )

这仅给出30分钟的间隔:

2020-01-02 10:30:00 3 hutr
2020-01-02 11:30:00 4 wwe

如何在10:30到12:00(包括12:00)之间每天过滤数据集中的每一行?

提前感谢

r filter time-series lubridate
1个回答
0
投票

您可以强迫时间到"numeric",看看它是否在1030:1200中。

load_dataset[as.numeric(strftime(load_dataset$date, "%H%M")) %in% 1030:1200, ]
#                  date V3   V4
# 3 2020-01-02 10:30:00  3 hutr
# 4 2020-01-02 11:00:00  2  uff
# 5 2020-01-02 11:30:00  4  wwe
# 6 2020-01-02 12:00:00  1  vev
© www.soinside.com 2019 - 2024. All rights reserved.