我有一个数据系列,其数据如下所示:
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)之间每天过滤数据集中的每一行?
提前感谢
您可以强迫时间到"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