Julia DataFrames:基于其他列创建新的数组列

时间:2016-04-23 21:47:00

标签: dataframe julia

我正在使用从csv读入的数据集。我有列p1,p2,p3和p4,我想将它们组合成一个列,其值为数组[p1 p2 p3 p4]。

``` x = DataFrame(randn(100,4)) 名字!(x,[:p1;:p2;:p3;:p4])

x [:test] = x [[:p1,:p2,:p3,:p4]] x#不起作用 ```

上面代码的结果在数据的每一行都有一个100x4的DataFrames.DataFrame。

我看到了这个问题Julia dataframe where a column is an array of arrays?,但它没有解决如何添加新数组列作为表的现有列的​​函数。

1 个答案:

答案 0 :(得分:5)

分配给新列的值应该是Vector,但x[[:p1, :p2, :p3, :p4]]是一个DataFrame,它将重复到 DataFrames的Vector

我建议您使用Tuple而不是Vector来获得更好的性能,可以通过以下代码实现:

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

如果你真的需要Vector,这段代码可以提供帮助:

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

(看起来有点棘手。收集一个元组返回一个Vector)