Агрегирование ценовых данных по разным временным горизонтам в R data.table
Привет! Я хочу свернуть данные за 5 минут (или 10 минут). Я знаю, что это легко сделать с помощью xts и функции to.minutes5, но я предпочитаю не использовать xts в этом случае, поскольку набор данных довольно большой. Есть ли простой способ сделать это в data.table?
Пример данных: в этом примере период между 21.30 и 21.34 (оба включительно) будет иметь только одну строку с t = 21.30, открытым = 0.88703, высоким = 0.88799, низким = 0.88702, закрытием = 0.88798, объемом = 43 (обратите внимание на данные из 21.35 сам игнорируется).
t open high low close volume
1: 2010-01-03 21:27:00 0.88685 0.88688 0.88685 0.88688 2
2: 2010-01-03 21:28:00 0.88688 0.88688 0.88686 0.88688 5
3: 2010-01-03 21:29:00 0.88688 0.88704 0.88687 0.88703 7
4: 2010-01-03 21:30:00 0.88703 0.88795 0.88702 0.88795 10
5: 2010-01-03 21:31:00 0.88795 0.88795 0.88774 0.88778 7
6: 2010-01-03 21:32:00 0.88778 0.88778 0.88753 0.88760 8
7: 2010-01-03 21:33:00 0.88760 0.88781 0.88760 0.88775 11
8: 2010-01-03 21:34:00 0.88775 0.88799 0.88775 0.88798 7
9: 2010-01-03 21:35:00 0.88798 0.88803 0.88743 0.88782 8
10: 2010-01-03 21:36:00 0.88782 0.88782 0.88770 0.88778 6
Вывод из dput (head (myData)) по запросу GSee. Я хочу использовать data.table для хранения еще нескольких производных полей, основанных на этих исходных данных. Таким образом, даже если бы я использовал xts, чтобы свернуть эти ценовые бары, мне придется как-то поместить их в таблицу данных, поэтому я буду признателен за любые советы по правильному способу хранения data.table с элементами xts.
structure(list(t = structure(c(1241136000, 1241136060, 1241136120,
1241136180, 1241136240, 1241136300), class = c("POSIXct", "POSIXt"
), tzone = "Europe/London"), open = c(0.89467, 0.89467, 0.89472,
0.89473, 0.89504, 0.895), high = c(0.89481, 0.89475, 0.89473,
0.89506, 0.8951, 0.895), low = c(0.89457, 0.89465, 0.89462, 0.89473,
0.89486, 0.89486), close = c(0.89467, 0.89472, 0.89473, 0.89504,
0.895, 0.89488), volume = c(96L, 14L, 123L, 49L, 121L, 36L)), .Names = c("t",
"open", "high", "low", "close", "volume"), class = c("data.table",
"data.frame"), row.names = c(NA, -6L), .internal.selfref = <pointer: 0x0000000000100788>)