Например, предположим, что у вас есть ~ 10 лет ежедневных 1-минутных данных для объема инструмента x следующим образом (в формате xts
) с 9:30 до 16:30:
Date.Time Volume
2001-01-01 09:30:00 1200
2001-01-01 09:31:00 1110
2001-01-01 09:32:00 1303
На всем пути до:
2010-12-20 16:28:00 3200
2010-12-20 16:29:00 4210
2010-12-20 16:30:00 8303
Я хотел бы:
- Получите средний объем в каждую минуту для всей серии (т.е. средний объем за все 10 лет в 9:30, 9:31, 9:32 ... 16:28, 16:29, 16:30)
Как мне лучше поступить:
- Объединение данных в одноминутные сегменты
- Получение среднего значения этих ведер
- Восстановить эти "средние" сегменты обратно в один временной ряд xts / zoo?
Я хорошо разбирался с функциями aggregate
, sapply
, period.apply
и т. Д., Но просто не могу правильно "упаковать" данные.
Это достаточно легко решить с помощью цикла, но очень медленно. Я бы предпочел избежать программного решения и использовать функцию, которая использует преимущества архитектуры C ++ (т.е. решение на основе xts
)
Может ли кто-нибудь дать совет / решение?
Большое спасибо заранее.