Aufheben der Datenrahmenspalte, die Informationen aus einer anderen Spalte enthält

8

Ich habe einen Datenrahmen, der aus zwei Spalten besteht: einem Zeichenvektor col1 und einer list Spalte, col2 .

%Vor%

Ich möchte meine col2 aufheben, wobei ich für jedes Element der Vektoren in der Liste die in col1 gespeicherte Information aufbewahre. Um es anders auszudrücken, in der häufig verwendeten Terminologie für die Umgestaltung von Datenrahmen: Die Spalte "Wide" sollte in ein "Long" -Format konvertiert werden.

Dann am Ende des Tages möchte ich zwei Vektoren der Länge gleich length(unlist(myDataFrame$col2)) . Im Code:

%Vor%

Ich kann mir keinen direkten Weg vorstellen.

    
CptNemo 04.10.2014, 15:33
quelle

3 Antworten

3

Hier ist die Idee, zuerst die Länge jedes Listenelements mit sapply zu ermitteln und dann rep zu verwenden, um die col1 mit dieser length

zu replizieren %Vor%

Oder wie von @Ananda Mahto vorgeschlagen, könnte das auch mit vapply

gemacht werden %Vor%     
akrun 04.10.2014, 15:37
quelle
15

Sie können auch unnest aus dem Paket tidyr verwenden:

%Vor%     
Henrik 06.01.2016 17:44
quelle
4

Sie können die "data.table" verwenden, um das gesamte data.frame zu erweitern und die Spalte von Interesse zu extrahieren.

%Vor%

In neueren Versionen von R können Sie jetzt die Funktion lengths anstelle von sapply(list, length) verwenden. Die Funktion lengths ist wesentlich schneller.

%Vor%     
A5C1D2H2I1M1N2O1R2T1 04.10.2014 15:44
quelle

Tags und Links