2016-04-23 6 views
2

Ich arbeite mit einem Dataset, das ich von einem CSV eingelesen habe. Ich habe die Spalten p1, p2, p3 und p4, die ich zu einer einzigen Spalte kombinieren möchte, deren Werte das Array [p1 p2 p3 p4] sind.Julia DataFrames: neue Spalte von Arrays basierend auf anderen Spalten erstellen

`` ` x = Dataframe (randn (100,4)) Namen (x, [: p1;: P2; P3;: p4])!

x [: test] = x [[: p1,: p2: p3: p4]] x # funktioniert nicht in jeder Zeile der Daten `` `

das Ergebnis des Codes über eine 100x4 DataFrames.DataFrame hat.

Ich habe diese Frage Julia dataframe where a column is an array of arrays? gesehen, aber es behandelt nicht, wie eine neue Array-Spalte als eine Funktion der vorhandenen Spalten der Tabelle hinzugefügt wird.

Antwort

4

Der einer neuen Spalte zugewiesene Wert sollte ein Vektor sein, aber x[[:p1, :p2, :p3, :p4]] ist ein DataFrame, der zu ein Vektor von DataFrames wiederholt wird.

Ich schlage vor, Sie verwenden Tuple eher als Vektor eine bessere Leistung zu erhalten, kann es durch diesen Code erreicht werden:

x[:test] = collect(zip(x[:p1],x[:p2],x[:p3],x[:p4])) 

Wenn Sie wirklich ein Vektor benötigen, können Sie diesen Code helfen:

x[:test] = map(collect, zip(x[:p1],x[:p2],x[:p3],x[:p4])) 

(es sieht ein bisschen knifflig. Sammeln ein Tuple gibt einen Vektor zurück)

Verwandte Themen