У меня есть большой (150 000x7) фрейм данных, который я намерен использовать для повторного тестирования и анализа в реальном времени финансового рынка. Данные представляют состояние транспортного средства с 5-минутными интервалами (, хотя отверстия существуют). Похоже, что это (но гораздо больше):R: Эффективно подмножество данных в зависимости от времени суток
pTime Time Price M1 M2 M3 M4
1 1212108300 20:45:00 1.5518 12.21849 -0.37125 4.50549 -31.00559
2 1212108900 20:55:00 1.5516 11.75350 -0.81792 -1.53846 -32.12291
3 1212109200 21:00:00 1.5512 10.75070 -1.47438 -8.24176 -34.35754
4 1212109500 21:05:00 1.5514 10.23529 -1.06044 -8.46154 -33.24022
5 1212109800 21:10:00 1.5514 9.74790 -1.02759 -10.21978 -33.24022
6 1212110100 21:15:00 1.5513 9.31092 -1.17076 -11.97802 -33.79888
7 1212110400 21:20:00 1.5512 8.84034 -1.28428 -13.62637 -34.35754
8 1212110700 21:25:00 1.5509 8.07843 -1.63715 -18.24176 -36.03352
9 1212111000 21:30:00 1.5509 7.39496 -1.49198 -20.65934 -36.03352
10 1212111300 21:35:00 1.5512 7.65266 -1.03717 -18.57143 -34.35754
Данные предварительно загружаются в R, но во время моего обратного теста мне нужно Подмножество его по двум критериям:
Первый критерий представляет собой чтобы избежать заглядывания в будущее. Окно должно быть таким, чтобы каждый новый 5-минутный интервал на заднем тесте сдвигал все окно в будущее на 5 минут. Эта часть я могу сделать так:
require(zoo)
zooser <- zoo(x=tser$Close, order.by=as.POSIXct(tser$pTime, origin="1970-01-01"))
window(zooser, start=A, end=B)
Второго критерий является другого раздвижного окна, но один, который скользит через time of day
и содержит только те записи, которые находятся в пределах N
минут времени ввода в любой день ,
Пример: Если размер окна является 2 hours
и время вход 12:00PM
то окно должно содержать все строки с Time
между 10:00AM
и 2:00PM
Это та часть, которая у меня возникли проблемы, выяснить.
Редактировать: Мои данные имеют отверстия в нем, два последовательных ряда могут быть БОЛЕЕ 5 минут друг от друга. Данные выглядят так:
Поскольку окно проходит через эти промежутки, количество точек внутри окон должно меняться.
Ниже мой код MySQL, который делает то, что я хочу сделать в R (ту же структуру таблицы):
SET @qTime = Time(FROM_UNIXTIME(SAMP_endTime));
SET @inc = -1;
INSERT INTO MetIndListBuys (pTime,ArrayPos,M1,M2,M3,M4)
SELECT pTime,@inc:[email protected]+1,M1,M2,M3,M4
FROM mergebuys USE INDEX (`y`) WHERE pTime BETWEEN SAMP_startTime AND SAMP_endTime
AND TIME_TO_SEC(TIMEDIFF(Time,@qTime))/3600 BETWEEN 0-HourSpan AND HourSpan
;
Эти значения индекса нигде не приближаются к 12:00 PM, по крайней мере, в моем часовом поясе. –
Да, вы правы ... Я просто случайно выбрал «12:00 PM». Плохой пример, я думаю. –