Нет черного и белого ответа: оба типа объектов имеют свои сильные стороны для разных целей (хотя я бы почти всегда использовал data.table
вместо data.frame
, задавая ваш вопрос, потому что у вас есть гораздо больше возможностей.). Я лично использую как взаимозаменяемые в исследованиях, но обычно сохраняю исходные исходные исходные данные в формате xts
для начала (отметьте галочкой или данные OHLC в объектах xts
).
Оба типа объекта быстро, с интенсивными вычислениями кода, написанного на языке C.
Если размеры (длина или ширина) вашего временного ряда не очень большие, вы можете легко перенести туда и обратно (например data.table("index" = index(xtsobj), coredata(xtsobj)
) в уровень безопасности, а затем объединить data.tables
, если вы хотите объединить ценные бумаги для типов поперечного сечения моделирования. Я обычно переключаться между двумя типами объектов для временных рядов, что я работаю с
xts
объекты должны использовать все столбцы одного и того же типа (numeric
или character
являются общими типами), который может быть ограничение, если у вас есть категорический переменные, смешанные с численными данными (вы можете сопоставить категориальные переменные с числовыми значениями, чтобы обойти это, но это дополнительная работа и может уменьшить ясность при моделировании ваших данных).
xts
делает слияние временных рядов данных (с merge
), особенно на разных частотах вместе, очень просто. Он также прекрасно работает со встроенными техническими индикаторами движущихся окон в TTR
и quantmod
. Вы также можете использовать quantmod
(chart_Series
и add_TA
) и xts
инструменты для построения графиков (см. ?plot.xts
) для визуализации из списка свечей свечи/OHLC. xts
делает агрегирование данных тика в данных столбца OHLC и изменение частоты рядов данных бара (например, от 5 минут до 1 часа баров или ежедневных баров) очень просто с полезными функциями, такими как to.period
, period.apply
и endpoints
(и это быстро используя C-код).
Если вы собираетесь создавать модели прогнозирования (многие линейные регрессии или более сложные модели) со многими категориальными переменными в ваших моделях прогнозирования (например, сектор безопасности, категории настроений), которые вы не хотите отображать на номера, это может быть лучше работать с data.table
.Многие модели прогнозирования в R (и неконтролируемые методы, такие как кластеризация) требуют, чтобы данные находились в формате data.frame
, и в этом случае сохранение/сохранение/загрузка ваших данных в формате data.table/data.frame
может иметь больший смысл, если ваша конечная цель - это моделирование прогнозирования. VAR
модели var
/urca
R также используют формат data.frame
. Хотя отмечается, что многие модели прогнозирования (через caret
и т. Д.) Требуют, чтобы данные были в цифровом формате matrix
, который вы можете легко извлечь из xts
объектов, используя coredata(xtsobj)
(преобразование data.frame
данных в формат matrix
также является простым и простым).
Если наборы данных действительно большие (каждая безопасность имеет n
ГЗ данных цен в памяти для больших n
), и вы хотите сделать повторные скопления групп (например, вычисленным среднее/сд возвратов по месяцам и символу или месяц и сектор, вы, вероятно, найдете data.table более естественным для работы), вы, вероятно, найдете data.table
более эффективным, он предназначен для обработки больших объемов данных в памяти/оперативной памяти и будет иметь тенденцию делать меньше копирования, чем xts
операций.