R如何在股票价格数据集上每天上午9:30至下午2:30之间提取数据

时间:2016-03-25 07:11:31

标签: r lubridate

head(Morgan)
 X.RIC  Date.L.    Time.L.        Type  Open  High   Low  LastVolume
1  MS.N 20060117 2016-03-25 09:30:00 Intraday 1Min 59.45 59.45 59.45 59.45  63100
2  MS.N 20060117 2016-03-25 09:31:00 Intraday 1Min 59.45 59.45 59.44 59.44  20800
3  MS.N 20060117 2016-03-25 09:32:00 Intraday 1Min 59.45 59.46 59.45 59.45   7400
4  MS.N 20060117 2016-03-25 09:33:00 Intraday 1Min 59.45 59.45 59.38 59.38  12100
5  MS.N 20060117 2016-03-25 09:34:00 Intraday 1Min 59.35 59.35 59.30 59.30   4800
6  MS.N 20060117 2016-03-25 09:35:00 Intraday 1Min 59.29 59.30 59.20 59.20   4800

Morgan$Time.L. <- as.POSIXct(Morgan$Time.L.,format = "%H:%M:%S")

我已经把时间转到了POSIXct模式,但我无法构建一个新的序列来匹配这两个列表,因为数据行和时间是分开存储的。你能帮我在上午9:30到下午2:30之间提取日常数据,形成一个新的数据集。或在新行中标记正确的数据。

2 个答案:

答案 0 :(得分:0)

我不清楚您需要什么作为输出,但我的假设是您希望按日期拆分数据集。如果是这种情况,您可以使用程序包dlply中的plyr函数将数据框拆分为按日期显示的结果列表。

键入类似:dlply(.data = Morgan, .variables = "Date.L.")的内容应返回每个日期的数据框列表。

答案 1 :(得分:0)

如果不使用其他软件包,如果Time.L.是类POSIXct,那么您可以像处理数字一样处理它并构建条件语句:

lower <- as.POSIXct(strptime("09:30:00", format = "%H:%M:%S"))
upper <- as.POSIXct(strptime("14:30:00", format = "%H:%M:%S"))
subset(Morgan, subset = Time.L. >= lower & Time.L. <= upper)