I new with R.我正在尝试在 5 分钟内聚合数据。我想要开盘价、收盘价、高价、低价和总大小。我添加了高频包,以及动物园包和xts包。我正在遵循从此链接创建包的人员的教程(第 3.2 节):http://highfrequency.herokuapp.com/
这是我得到的错误:
Error in seq.default(start(ts), end(ts), by = tby) :
'from' must be of length 1
这是我正在使用的数据示例。该文件要大得多,但我不知道如何将其附加到我的帖子中:
Date,Time,Price,Size
02/18/2014,05:06:13,49.6,200
02/18/2014,05:06:13,49.6,200
02/18/2014,05:06:13,49.6,200
02/18/2014,05:06:14,49.6,200
02/18/2014,05:06:14,49.6,193
02/18/2014,05:44:41,49.62,100
02/18/2014,06:26:36,49.52,100
02/18/2014,06:26:36,49.52,500
02/18/2014,07:09:29,49.6,100
02/18/2014,07:56:40,49.56,300
02/18/2014,07:56:40,49.55,400
02/18/2014,07:56:41,49.54,200
02/18/2014,07:56:43,49.55,100
02/18/2014,07:56:43,49.55,100
02/18/2014,07:56:50,49.55,100
02/18/2014,07:57:12,49.53,100
02/18/2014,07:57:12,49.51,2200
02/18/2014,07:57:12,49.51,100
02/18/2014,07:57:12,49.5,200
这是我的代码:
library(highfrequency)
data1<-read.table("C_0.txt",sep=",",header=T,stringsAsFactors=F)
ts=data1$Price
tsagg5min=aggregatets(ts,on="minutes",k=5)
您对如何使用非常大的数据集实现我的目标有什么建议吗?我运行一台 Windows 8 64 位机器。
谢谢你的帮助。
split
、cut
和strptime
将数据切成 5 分钟的间隔。 假设您的数据dat
,
> x <- split(dat, cut(strptime(dat$Time, format="%R"),"5 mins"))
> x
$`2014-02-27 05:06:00`
Date Time Price Size
1 02/18/2014 05:06:13 49.6 200
2 02/18/2014 05:06:13 49.6 200
3 02/18/2014 05:06:13 49.6 200
4 02/18/2014 05:06:14 49.6 200
5 02/18/2014 05:06:14 49.6 193
...
...
...
$`2014-02-27 07:56:00`
Date Time Price Size
10 02/18/2014 07:56:40 49.56 300
11 02/18/2014 07:56:40 49.55 400
12 02/18/2014 07:56:41 49.54 200
13 02/18/2014 07:56:43 49.55 100
14 02/18/2014 07:56:43 49.55 100
15 02/18/2014 07:56:50 49.55 100
16 02/18/2014 07:57:12 49.53 100
17 02/18/2014 07:57:12 49.51 2200
18 02/18/2014 07:57:12 49.51 100
19 02/18/2014 07:57:12 49.50 200
删除空白的时间块,
x <- x[sapply(x, dim)[1,] != 0]
获得高Price
> sapply(x, function(y) max(y$Price))
2014-02-27 05:06:00 2014-02-27 05:41:00 2014-02-27 06:26:00 2014-02-27 07:06:00
49.60 49.62 49.52 49.60
2014-02-27 07:56:00
49.56
获得低Price
> sapply(x, function(y) min(y$Price))
2014-02-27 05:06:00 2014-02-27 05:41:00 2014-02-27 06:26:00 2014-02-27 07:06:00
49.60 49.62 49.52 49.60
2014-02-27 07:56:00
49.50
获取总Size
> sapply(x, function(y) sum(y$Size))
2014-02-27 05:06:00 2014-02-27 05:41:00 2014-02-27 06:26:00 2014-02-27 07:06:00
993 100 600 100
2014-02-27 07:56:00
3800