R: transforming "kurze form" Daten zu "lange form" Daten ohne for-Schleifen?
Angenommen ich habe einen R-dataframe wie diese:
Subject Session Property.A Property.B Property.C
1 100 1 -1.22527548 -0.9193751 -1.7501693
2 100 10 2.30627980 1.8940830 -0.8443976
3 100 2 2.33243332 -0.5860868 -4.2074489
4 100 3 0.38130810 -0.7336206 4.8016230
5 100 4 1.44685875 0.5066249 2.0138624
6 100 5 0.08907721 -0.3715202 1.4983700
Ich habe gehört, diese Art von Daten-frame bezeichnet als "Kurzform" oder "große form". Jetzt angenommen, ich möchte so Aussehen wie das, was ich gehört habe, als "lange form":
Subject Session Property Value
1 100 1 A -1.2252754
2 100 1 B -0.9193751
3 100 1 C -1.7501693
4 100 2 A 2.3324333
5 100 2 B -0.5860868
6 100 2 C -4.2074489
Ist, ich habe N Spalten, die möchte ich reduzieren, um nur zwei "name/Wert" - Spalten, mit anderen Spalten in der extended dataframe mit wiederholten Werten als erforderlich.
Natürlich konnte ich diese Konvertierung durchführen mit ein paar for-Schleifen, aber das scheint wirklich hässlich, und es wäre ein Schmerz zu erhalten, wenn ich mehr Eigenschaft Spalten.
Gibt es eine Möglichkeit, dies in R mit nur ein paar Zeilen code? Einige Magische Kombination von Funktionen, die ich noch nicht entdeckt haben?
- Update: heute, ich habe klug, und ich benutze
plyr
für alle meine Daten Umformen muss!! - Was ist die Art und Weise zu tun, dass in plyr?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie die
melt
Funktion im Paketreshape2
:Wenn Sie brauchen, um clean-up der Spalte Namen und/oder die Werte für die Spalte "variable":
reshape
Funktion in der Statistik kommt mit der Basis R und bietet scheinbar gleichwertige Funktionalität zu Schmelzen und gegossen, aber ich habe nie versucht, es zu lernen als die syntax dermelt
undcast
sind ziemlich leicht zu Holen auf. Wie für die Suche über die Dinge, denke ich, Sie haben ein bisschen von einem Punkt - zum Glück ist es SO!reshape2
was kann durchaus ein bisschen schnellerIch mag mit
plyr
Funktionen, aber diereshape
- Funktion von der Basis ist sehr mächtig, wie dargestellt durch die folgende Lösung.reshape Paket für, das ist toll, aber... ein paar loops, ist nicht die alternative.
vielleicht dieses Beispiel ist lehrreich...
oder diese