我正在使用从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?,但它没有解决如何添加新数组列作为表的现有列的函数。
答案 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)