【发布时间】:2017-07-11 07:57:20
【问题描述】:
我有一个包含 203615 行和 2 列(价格和时间戳)的大型股票价格数据集。以下格式
价格(美元) |时间戳
3.5 | 2014-01-01 20:00:00
2 | 2014-01-01 20:15:00
5 | 2014-01-01 20:15:00
----
4 | 2014-01-31 23:00:00
5 | 2014-01-31 23:00:00
4.5 | 2014-01-31 23:00:00
203615 2.3 | 2014-01-31 23:00:00
时间戳从“2014-01-01 20:00:00”到“2014-01-31 23:00:00”变化,间隔为 15 分钟(四舍五入为 15 分钟)。我在同一个时间戳上有几笔交易。 我必须根据时间戳对行进行分组,相差一天,并计算价格的最小值、最大值和平均值以及时间戳限制内的行数,并将它们分配给每次迭代的新数据帧中的一行,直到它到达结束时间戳("2014-01-31 23:00:00") 从开始日期('2014-01-02 20:00:00") 注意:必须每 15 分钟进行一次迭代
我试过while循环。请帮我解决这个问题并建议我是否可以使用任何软件包
【问题讨论】:
-
使用 lubridate,有很多教程可以帮助您了解其复杂性。一旦标记被格式化,R 将允许您在 for 循环中创建 24 小时的时间窗口(您实际上可以给它 1 天或 1 小时的间隔进行迭代),然后获取该期间的最大值和最小值。最难处理的事情之一(在干净的数据中)是日期。可悲的是,您将不得不花时间弄清楚如何告诉 R 当前格式,然后给它窗口以在循环中窥视或应用函数。这是一项值得的努力,因为日期因素会不断出现!
-
您好,感谢您的回答。我一直在使用while循环。我也会尝试 for 循环和函数
-
for (i in 97:nrow(raw)){ inter=raw$datetime[i] - as.difftime(24, unit='hours')....}这是我自己的代码,我用它来创建时间窗口(前 24 小时)来迭代并创建最小值和最大值
标签: r