带有时间戳的子集数据,与R中的日期无关

时间:2016-07-06 07:08:02

标签: r dataframe timestamp

数据集

head(data)
               Date   OPEN
2015-11-30 10:00:00 951.15
2015-11-30 10:30:00 949.90
2015-11-30 11:00:00 943.45
2015-11-30 11:30:00 944.30
2015-11-30 12:00:00 942.00
2015-11-30 12:30:00 940.60
2015-01-01 10:00:00 951.15
2015-01-01 10:30:00 949.90
2015-01-02 10:30:00 943.45
2015-01-02 11:30:00 944.30
2015-01-03 10:00:00 943.45
2015-01-03 10:30:00 943.45
2015-01-03 11:30:00 944.30
2015-01-06 10:00:00 942.00
2015-01-06 10:30:00 940.60
2015-01-06 11:00:00 940.60
2015-01-06 11:30:00 942.00

str(data)
'data.frame':   32023 obs. of  2 variables:
$ Date      : POSIXct, format: "2015-11-30 10:00:00" "2015-11-30 10:30:00" "2015-11-30 11:00:00" ...
 $ OPEN      : num  951 950 943 944 942 ...

您好, 数据帧如上所述。我想提取所有可用日期的时间戳10:00 and 10:30的开放价格。我只需要在过滤条件10:00 to 10:30中保留时间戳irrespective of dates。请在R中建议。 感谢。

2 个答案:

答案 0 :(得分:2)

我们可以format'日期'来提取HH:MM部分,使用%in%来获取逻辑vectorsubset。< / p>

subset(data, format(Date, "%H:%M") %in% c("10:00", "10:30"), select="OPEN")
#     OPEN
#1  951.15
#2  949.90
#7  951.15
#8  949.90
#9  943.45
#11 943.45
#12 943.45
#14 942.00
#15 940.60

如果是between那些间隔

library(chron)
subset(data, between(times(format(Date, "%H:%M:%S")) , 
                              times("10:00:00"), times("10:30:00")))

答案 1 :(得分:2)

您可以使用lubridate包来制作友好的子集:

library(lubridate)
res <- subset(data, minute(Date) <=30 & hour(Date) == 10)