如何在Julia中将GroupedDataFrame转换为DataFrame?

hoo*_*man 2 dataframe julia plots.jl

我已经使用以下groupby函数对DataFrame的子集进行了计算:

using RDatasets
iris = dataset("datasets", "iris")
describe(iris)
iris_grouped = groupby(iris,:Species)
iris_avg = map(:SepalLength => mean,iris_grouped::GroupedDataFrame)
Run Code Online (Sandbox Code Playgroud)

现在,我想绘制结果,但以下图出现错误消息:

@df iris_avg bar(:Species,:SepalLength)
Run Code Online (Sandbox Code Playgroud)

仅支持表

绘制数据的最佳方法是什么?我的想法是创建一个DataFrame并从那里开始。我将如何做,即如何将GroupedDataFrame转换为单个DataFrame?谢谢!

Bog*_*ski 5

转换GroupedDataFrame成一个DataFrame公正的呼吁DataFrame,例如:

julia> DataFrame(iris_avg)
3×2 DataFrame
? Row ? Species      ? SepalLength_mean ?
?     ? Categorical… ? Float64          ?
?????????????????????????????????????????
? 1   ? setosa       ? 5.006            ?
? 2   ? versicolor   ? 5.936            ?
? 3   ? virginica    ? 6.588            ?
Run Code Online (Sandbox Code Playgroud)

你的情况。

您也可能写过:

julia> combine(:SepalLength => mean, iris_grouped)
3×2 DataFrame
? Row ? Species      ? SepalLength_mean ?
?     ? Categorical… ? Float64          ?
?????????????????????????????????????????
? 1   ? setosa       ? 5.006            ?
? 2   ? versicolor   ? 5.936            ?
? 3   ? virginica    ? 6.588            ?
Run Code Online (Sandbox Code Playgroud)

在原件GroupedDataFrame

julia> by(:SepalLength => mean, iris, :Species)
3×2 DataFrame
? Row ? Species      ? SepalLength_mean ?
?     ? Categorical… ? Float64          ?
?????????????????????????????????????????
? 1   ? setosa       ? 5.006            ?
? 2   ? versicolor   ? 5.936            ?
? 3   ? virginica    ? 6.588            ?
Run Code Online (Sandbox Code Playgroud)

在原件上DataFrame

我在这里将转换写为第一个参数,但是通常,您将其写为最后一个参数(这样您就可以传递多个转换),例如:

julia> by(iris, :Species, :SepalLength => mean, :SepalWidth => minimum)
3×3 DataFrame
? Row ? Species      ? SepalLength_mean ? SepalWidth_minimum ?
?     ? Categorical… ? Float64          ? Float64            ?
??????????????????????????????????????????????????????????????
? 1   ? setosa       ? 5.006            ? 2.3                ?
? 2   ? versicolor   ? 5.936            ? 2.0                ?
? 3   ? virginica    ? 6.588            ? 2.2                ?
Run Code Online (Sandbox Code Playgroud)