(Julia) 将 DataFrame 列总和分配给新列

fin*_*ian 3 dataframe julia

我的 DataFrame 看起来像这样

 poly-d bias      var   irreducible_error   mse
Float64 Float64 Float64 Float64 Float64
  0.0  0.186675     0.00042362   0.01  0.197262
  1.0  0.0411247    0.000571736  0.01  0.051418
  2.0  0.0434971    0.000984634  0.01  0.0545198
  3.0  1.85323e-5   0.00144489   0.01  0.011316
  4.0  4.88342e-5   0.00140199   0.01  0.0110883
  5.0  1.6811e-6    0.00220646   0.01  0.0121978
  6.0  1.05011e-5   0.00213953   0.01  0.0122632
  7.0  4.17582e-9   0.00250119   0.01  0.0119988
  8.0  0.000105478  0.00314533   0.01  0.0135444
  9.0  4.51571e-6   0.00291042   0.01  0.0127425
 10.0  1.07721e-6   0.00381774   0.01  0.0142986
 11.0  5.78187e-6   0.00398581   0.01  0.0147937
 12.0  7.96598e-7   0.00461939   0.01  0.0134817
 13.0  2.95272e-5   0.00490143   0.01  0.0136078
 14.0  1.03758e-5   0.00558545   0.01  0.0160345
 15.0  1.36473e-6   0.00655103   0.01  0.0157278
 16.0  3.65874e-6   0.00706143   0.01  0.0185338
 17.0  4.49153e-6   0.00653606   0.01  0.0156871
 18.0  2.79525e-6   0.00774455   0.01  0.0178697
 19.0  3.0369e-5    0.00919628   0.01  0.018715  
Run Code Online (Sandbox Code Playgroud)

Julia像这样计算列的总和

sum(Matrix(res[:,["bias","var","irreducible_error"]]),dims=2)

我想将此输出分配为新列mse_explained

看起来这应该有效

res[:mse_explained] = sum(Matrix(res[:,["bias","var","irreducible_error"]]),dims=2)
Run Code Online (Sandbox Code Playgroud)

但是有一个DimensionMismatch. 我查了一下,sum(Matrix(res[:,["bias","var","irreducible_error"]]),dims=2)是一个 20x1 的数组,所以我不知道为什么Julia会有困难。

我也试过这个没有用

res[:mse_explained] .= sum(Matrix(res[:,["bias","var","irreducible_error"]]),dims=2)
Run Code Online (Sandbox Code Playgroud)

Bog*_*ski 5

这应该有效:

res.mse_explained = vec(sum(Matrix(res[:,["bias","var","irreducible_error"]]),dims=2))
Run Code Online (Sandbox Code Playgroud)

但是,做您想做的事情的标准方法是:

transform!(res, ["bias","var","irreducible_error"] => (+) => "mse_explained")
Run Code Online (Sandbox Code Playgroud)

  • 谢谢博古米尔!我在 Julia 社区各处都看到了您的帖子。感谢您帮助像我这样的人弄清楚如何正确使用它:) (4认同)