Julia の aggregate 関数で 「群ごとの平均値を求める」 または、「ダブりのある測定値を平均値で代表させる」

Julia の aggregate 関数を使うと、「群ごとの平均値を求める」 または、「ダブりのある測定値を平均値で代表させる」 などが、簡単にできます。後者は、R でいう場合の 「 重複した 'row.names' は許されません 」 などというエラーへの対応として aggregate を使える可能性があるという意味でもあります。

おなじみの iris を例にとりましょう。iris の Species すなわち setosa, versicolor, virginica の3種について、それぞれの4測定値 Sepal.Length, Sepal.Width ,Petal.Length, Petal.Width の平均を求めます。

aggregate(iris, : Species, mean)

であります。R の場合よりも書式が少しシンプルです。

SD は std で良いようです。

using RDatasets
iris = dataset("datasets", "iris")
aggregate(iris, :Species, [mean, std])
これで、下記のように結果が出ます。(ズレていたら、ごめんなさい)
3×9 DataFrames.DataFrame
│ Row │ Species      │ SepalLength_mean │ SepalLength_std │ SepalWidth_mean │ SepalWidth_std │ PetalLength_mean │ PetalLength_std │ PetalWidth_mean │ PetalWidth_std │
├─────┼──────────────┼──────────────────┼─────────────────┼─────────────────┼────────────────┼──────────────────┼─────────────────┼─────────────────┼────────────────┤
│ 1   │ "setosa"     │ 5.006            │ 0.35249         │ 3.428           │ 0.379064       │ 1.462            │ 0.173664        │ 0.246           │ 0.105386       │
│ 2   │ "versicolor" │ 5.936            │ 0.516171        │ 2.77            │ 0.313798       │ 4.26             │ 0.469911        │ 1.326           │ 0.197753       │
│ 3   │ "virginica"  │ 6.588            │ 0.63588         │ 2.974           │ 0.322497       │ 5.552            │ 0.551895        │ 2.026           │ 0.27465        │

Julia は、後発言語だけあって、文字数が少ないのに、かゆいところに手が届くことがあります。ただし、具体的事例をあげた解説が少ないのは、現在のところ難点ですね。

B! LINE