Я работаю с большим количеством данных о валютной паре большого количества времени в R. Файлы имеют размер 100-300 МБ, и я обычно буду работать с 3 файлами за раз. Я ищу (намного) более эффективный способ рассмотрения столбца TIME этих данных.Эффективные временные ряды в R
Мои данные начинает выглядеть как:
PAIR TIME BID ASK
1 USD/JPY 2012-01-02 00:00:00.307 77.023 77.055
2 USD/JPY 2012-01-02 00:00:00.493 77.030 77.049
3 USD/JPY 2012-01-02 00:00:05.003 77.030 77.050
4 USD/JPY 2012-01-02 00:00:05.005 77.023 77.056
5 USD/JPY 2012-01-02 00:00:05.006 77.024 77.056
6 USD/JPY 2012-01-02 00:00:06.008 77.023 77.056
... ... ... ...
R не имеет никаких проблем с пониманием столбец TIME. Например,
USDJPY$TIME[2] - USDJPY$TIME[1]
Придает OUTPUT
Time difference of 0.1860001 secs
данные уже организованы в виде файлов в месяц. К сожалению, это слишком много. Я хотел бы разбить данные о ценах на «торговую неделю»
Торговля на Форекс происходит в непрерывных многодневных трассах, обычно с понедельника по пятницу. Некоторые торговые праздники приостановят торговлю, и в эти дни данных не будет. Характер торгового планирования такова, что, если
USDJPY$TIME[t+1] - USDJPY$TIME[t]
... больше 12 часов, время т последний индекс времени на этой неделе в USDJPY.
Я не нашел приемлемого способа разбить данные на торговые недели, по индексам или иным образом. Все мои попытки в конечном итоге висят. Файл USDJPY содержит ~ 1 900 000 строк.
Один подход, который я пробовал:
for(i in 1:(length(USDJPY$TIME)-1)){
USDJPY.diff <- c(USDJPY.diff, USDJPY$TIME[i+1]-USDJPY$TIME[i])
}
занимает слишком много времени (я бросить курить, прежде чем он смог закончить)
Вы пробовали сделать смещение вектора (тот же вектор, только запаздывающий) и вычитания вектора все сразу? например 'early_time <- c (USDJPY $ TIME, NA) later_time <- c (NA, USDJPY $ TIME) time_diff <- later_time - early_time' – goodtimeslim
Что вы хотите, чтобы ваш результат выглядел? Это кажется идеальным для пакета 'data.table'. Он должен иметь возможность обрабатывать 1,9 миллиона строк в секундах. –
Я хочу, чтобы вывод был индексом последней строки в каждой временной группе (торговая неделя). поэтому, если эти индексы начинаются как 113987, 245776, 342811, ... вывод должен быть вектором, списком или data.table –