2016-04-23 101 views
2

我正在使用從csv讀入的數據集。我有列p1,p2,p3和p4,我想將它們組合成單個列,其值是數組[p1 p2 p3 p4]。Julia DataFrames:基於其他列創建數組的新列

``` X =數據幀(randn(100,4)) 名稱(X,[:P1;:P2;:P3;:P4])!

X [:測試] = X [[:P1,:P2,:P3,:P4]] X#不工作 ```

代碼的結果上述具有100x4 DataFrames.DataFrame數據的每一行英寸

我看到這個問題Julia dataframe where a column is an array of arrays?但它沒有解決如何添加一個新的數組列作爲表的現有列的​​函數。

回答

4

分配給新列的值應該是一個向量,但是x[[:p1, :p2, :p3, :p4]]是一個DataFrame,它將被重複到向量的DataFrames

我建議你用元組而不是載體,以獲得更好的性能,它可以通過這個代碼可以實現:

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

如果你真的需要一個載體,這個代碼可以幫助:

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

(看起來有點棘手。收集一個Tuple返回一個Vector)