Gibt es eine Möglichkeit, die Korrelationen zwischen Werten elegant zu berechnen, wenn diese Werte von einer Gruppe in einer einzigen Spalte einer data.table gespeichert werden (abgesehen von der Umwandlung der data.table in eine Matrix)?
%Vor%Etwas, das funktioniert, aber die Gruppennamen als Eingabe benötigt:
%Vor%Ich suche eher nach etwas wie:
%Vor%Aber das gibt mir nicht die Korrelation (en), nach denen ich suche.
Hier ist das gleiche Problem für eine Matrix mit den richtigen Ergebnissen.
%Vor%Alle Kommentare oder Hilfe sehr geschätzt.
Es gibt keine einfache Möglichkeit, dies mit data.table
zu tun. Der erste Weg, den Sie angegeben haben:
Ist wahrscheinlich der einfachste.
Eine Alternative ist reshape
your data.table
von "long"
format bis "wide"
format:
Update: Wenn Sie data.table
version & gt; = 1.9.0 verwenden, können Sie stattdessen dcast.data.table
verwenden, was viel schneller ist. Überprüfen Sie diesen Beitrag , um weitere Informationen zu erhalten.
Ich kenne keinen Weg, um es in Matrixform sofort zu bekommen, aber ich finde diese Lösung nützlich:
%Vor%seit Sie mit einem geschmolzenen Datensatz begonnen haben und Sie mit einer geschmolzenen Darstellung der Korrelation enden.
Mit diesem Formular können Sie auch bestimmte Paare berechnen, insbesondere ist es Zeitverschwendung, beide Diagonalen zu berechnen. Zum Beispiel:
%Vor%Alternativ funktioniert diese Form genauso gut für die Kreuzkorrelation zwischen zwei Mengen (d. h. den Block außerhalb der Diagonalen)
%Vor% Offensichtlich, wenn Sie diese schließlich in Matrixform haben wollen, dann können Sie dcast
oder dcast.data.table
verwenden. Beachten Sie jedoch, dass Sie in den obigen Beispielen zwei Spalten mit demselben Namen haben, um das zu beheben, ist es eine Umbenennung wert sie in der j-Funktion. Für das ursprüngliche Problem:
Ich habe seither eine sogar einfache Alternative dafür gefunden. Du warst mit deinem dt[, cor(value, value), by="group"]
Ansatz ziemlich nah dran. Was Sie wirklich brauchen, ist zuerst eine kartesische Verbindung zu den Daten zu machen und dann nach zu gruppieren.
Ie.
Das hat den Vorteil, dass es die Reihen zusammenfügt (anstatt anzunehmen, dass sie die gleiche Länge haben). Sie können dies dann in eine Matrixform umwandeln oder es so lassen, wie es ist, als Heatmap in ggplot usw. zu plotten.
Vollständiges Beispiel
%Vor%Tags und Links r data.table correlation