我想知道我是否能够在 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。
谢谢。
如果你不想使用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)})
)