Es gibt keine Schwarz-Weiß-Antwort: beide Objekttypen haben ihre Stärken für verschiedene Zwecke (Obwohl ich würde fast immer data.table
anstelle von data.frame
in Ihre Frage zu stellen, weil Sie weit mehr Möglichkeiten bekommen.). Ich persönlich benutze beide austauschbar in der Forschung, aber im Allgemeinen behalten die ursprünglichen rohen darunterliegenden Daten im Format xts
zu beginnen (Tick oder OHLC Bar Daten in xts
Objekte).
Beiden Objekttypen sind schnell, mit rechenintensiven Code in C geschrieben
Wenn die Abmessungen (Länge oder Breite) Ihre Zeitreihe nicht groß sind, können Sie leicht hin und her übertragen (zB data.table("index" = index(xtsobj), coredata(xtsobj)
) bei die Sicherheitsstufe, und fusionieren Sie dann data.tables
, wenn Sie Wertpapiere für Querschnittstypen der Modellierung kombinieren möchten. Ich schalte normalerweise hin und her zwischen den beiden Objekttypen für Zeitreihen, die ich mit
arbeiten
xts
Objekte müssen alle Spalten des gleichen Typs verwenden (numeric
oder character
sind die häufigsten Arten), die eine Einschränkung sein kann, wenn man kategorisch haben Variablen gemischt mit numerischen Daten (Sie können die kategorialen Variablen numerischen Werten zuordnen, um dies zu umgehen, aber das ist zusätzliche Arbeit und kann die Übersichtlichkeit beim Modellieren Ihrer Daten verringern).
xts
macht Zusammenführen Zeitreihendaten (mit merge
), insbesondere bei verschiedenen Zeitfrequenzen zusammen, sehr einfach zu tun. Es funktioniert auch sehr gut mit dem Bau beweglicher Fenster technische Indikatoren in TTR
und quantmod
. Sie können auch quantmod
(chart_Series
und add_TA
) und xts
Plotwerkzeuge (siehe ?plot.xts
) verwenden, um die Candlestick-/OHLC-Bar-Daten aus der Box zu visualisieren. xts
aggregiert Tick-Daten in OHLC-Balken-Daten und ändert die Häufigkeit von Balken-Datenreihen (zB von 5 Minuten Balken zu 1 Stunde Balken oder zu täglichen Balken) sehr einfach mit nützlichen Funktionen wie to.period
, period.apply
und endpoints
(und es ist schnell tun es mit C-Code).
Wenn Sie Vorhersagemodelle (viele lineare Regressionen oder komplexere Modelle) mit vielen kategorischen Variablen in Ihren Vorhersagemodellen (z. B. Sicherheitssektor, Stimmungskategorien) erstellen möchten, die Sie nicht auf Zahlen abbilden möchten möglicherweise besser mit data.table
arbeiten.Viele Vorhersagemodelle in R (und unüberwachte Methoden wie Clustering) erfordern Daten im Format data.frame
. In diesem Fall kann das Speichern/Speichern/Laden Ihrer Daten im Format data.table/data.frame
sinnvoller sein, wenn Ihr Endziel die Vorhersagemodellierung ist. VAR
Modelle in den var
/urca
R-Paketen verwenden auch data.frame
Format. Es wird jedoch darauf hingewiesen, dass viele Vorhersagemodelle (über caret
usw.) Daten im numerischen Format matrix
benötigen, die Sie einfach aus xts
Objekten mit coredata(xtsobj)
extrahieren können (das Konvertieren von data.frame
Daten in matrix
Format ist in der Regel auch einfach).
Wenn Ihre Datensätze wirklich groß sind (jede Sicherheit hält n
GBs von Preisdaten im Speicher für große n
), und Sie wollen von Gruppen wiederholt Aggregationen tun (zB berechneten Mittelwert/sd der Renditen für Monat und Symbol oder Monat und Sektor, werden Sie wahrscheinlich finden data.table natürlicher zu arbeiten), werden Sie wahrscheinlich finden effizienter es ist entworfen, um große Mengen an Daten im Speicher/RAM zu behandeln und neigen dazu, weniger kopieren als xts
Operationen.