DataFramesMeta 可以同时处理多列转换或汇总吗?

问题描述 投票:0回答:1

我想知道我是否能够在 DataFramesMeta 中复制内容。

让我们检查一下您在具有多个列和函数的 DataFrame 中的表现。

using DataFrames, Statistics
df=DataFrame(
           a=string.("cat",rand(1:3,100)),
           x=rand(1:100, 100),
           y=rand(2:10:100, 100),
           z=rand(0.5:0.1:2, 100)
         )
combine(groupby(df,:a), [:x,:y,:z].=>[mean sum])

DataFramesMeta 是否有等效项?我没有看到超过一列的任何示例。在文档中,我发现仅使用 $ 来复制 (symbol => f => newname) 逻辑和 :y=>f(:x) 形式,我猜这是individual

谢谢。

dataframe julia split-apply-combine dataframesmeta.jl
1个回答
0
投票

如果你不想使用DataFrameMacros而使用DataFramesMeta

您可以执行以下操作:

using DataFramesMeta, Statistics
@by  df :a $([:x,:y,:z].=>[mean sum])

#for DataFrameMacros。

using DataFrameMacros, Statistics
@combine(@groupby(df,:a)          
        , "mean_{}" =  mean({Not(:a)})
        ,  "sum_{}" =  sum({Not(:a)}))
    
#alternative
gdf =  @groupby(df, :a)
@combine( gdf, "mean_{}" =  mean({valuecols(gdf)})
             ,  "sum_{}" =  sum({valuecols(gdf)})
         )

#or (if you don't have @chain available)
gdf |> x->  @combine(x, "mean_{}" = Mean({valuecols(x)})
                         , "sum_{}" =  sum({valuecols(x)})
                    )
© www.soinside.com 2019 - 2024. All rights reserved.