Wie man diesen Datenrahmen mit dem Umformpaket umformt [duplizieren]

8

Ich habe einen ziemlich großen Datenrahmen, der wie folgt strukturiert ist:

%Vor%

Ich muss einen Datenrahmen wie folgt erstellen:

%Vor%

Ich bin mir ziemlich sicher, dass ich es mit dem Umgestaltungspaket machen muss, aber ich kann nicht bekommen, was ich will.

Könnten Sie mir helfen?

Danke

    
corrado 13.01.2012, 15:57
quelle

5 Antworten

7

Hier ist die reshape() Lösung.

Das Schlüssel-Bit ist, dass das Argument varying= eine Liste von Vektoren mit Spaltennamen im Wide-Format annehmen kann, die einzelnen Variablen im langen Format entsprechen. In diesem Fall werden die Spalten "x1", "x2", "x3" im ursprünglichen Datenframe an eine Spalte im langen Datenframe gesendet, die Spalten "y1, y2, y3" in eine zweite Spalte und so weiter.

%Vor%

Schließlich sind ein paar rein kosmetische Schritte erforderlich, damit die Ergebnisse exakt aussehen, wie in Ihrer Frage gezeigt:

%Vor%     
Josh O'Brien 13.01.2012, 18:17
quelle
2

Hier ist ein Ansatz, der reshape2 verwendet und in meinem Artikel zu sauberen Daten .

Schritt 1: Identifizieren Sie die Variablen, die sich bereits in Spalten befinden. In diesem Fall: id und v. Dies sind die Variablen, die wir durch

schmelzen %Vor%

Schritt 2: Aufteilen von Variablen, die derzeit in einer Spalte zusammengefasst sind. In diesem Fall ist das die Quelle (der Zeichenteil) und rep (der ganzzahlige Teil):

Es gibt viele Möglichkeiten, dies zu tun, ich werde String-Extraktion mit dem stringr -Paket

verwenden %Vor%

Schritt 3: Ordne die Variablen, die momentan in den Zeilen sind, aber wir wollen in Spalten auf:

%Vor%     
hadley 14.01.2012 13:13
quelle
1

Jemand bitte beweisen Sie mir falsch, aber ich denke nicht, dass es einfach ist, dieses Problem zu lösen, indem Sie entweder das Paket reshape oder die Funktion reshape verwenden.

Es ist jedoch einfach genug mit lapply und do.call :

Replizieren Sie die Daten:

%Vor%

Machen Sie die Analyse

%Vor%     
Andrie 13.01.2012 16:40
quelle
0

Versuchen Sie, das reshapeGUI-Paket zu verwenden. Es nutzt das plyr-Paket und das reshape2-Paket und bietet Ihnen eine benutzerfreundliche Oberfläche, mit der Sie Ihre Umformung in der Vorschau anzeigen können, bevor Sie sie ausführen. Es gibt Ihnen auch den Code für die Umformung, die Sie gerade machen, damit Sie es in Ihr Skript einfügen können, um die Reproduzierbarkeit zu verbessern. So können Sie lernen, wie Sie die Befehle schmelzen und umformen in reshape2 anwenden können. Es ist eine nette Krücke für komplexe Datenmanipulationen wie diese für diejenigen, die Ninjas nicht umformen.

    
rnorberg 12.07.2012 14:13
quelle
0

Hier sind zwei neuere Ansätze, die für jemanden von Interesse sein könnten, der diese Frage liest:

Option 1: Der Ordnungssinn

%Vor%

Option 2: data.table

%Vor%     
A5C1D2H2I1M1N2O1R2T1 14.12.2017 09:08
quelle

Tags und Links