これら 2 つの実行で同じ結果が得られることを期待していましたが、結果は異なります。dplyr コードがどのように機能するかを本当に理解しているかどうか疑問に思います (パッケージとオンラインで dplyr について見つけることができるほとんどすべてを読みました)。結果が異なる理由、または同様の結果を得る方法を誰か説明できますか?
library(dplyr)
x <- iris
x <- x %.%
group_by(Species, Sepal.Width) %.%
summarise (freq=n()) %.%
summarise (mean_by_group = mean(Sepal.Width))
print(x)
x <- iris
x <- tapply(x$Sepal.Width, x$Species, mean)
print(x)
更新: これが最も効率的な方法だとは思いませんが、次のコードは、tapply アプローチと一致する結果をもたらします。Hadleyの提案に従って、結果を1行ずつ精査しましたが、これはdplyrを使用して思いついた最高のものです
library(dplyr)
x <- iris
x <- x %.%
group_by(Species, Sepal.Width) %.%
summarise (freq=n()) %.%
mutate (mean_by_group = sum(Sepal.Width*freq)/sum(freq)) %.%
print(x)
更新: なんらかの理由で、分析したいすべての変数をグループ化する必要があると考えました。これは私が必要としていたすべてであり、パッケージ内の例に近いものです。
x <- iris %.%
group_by(Species) %.%
summarise(Sepal.Width = mean(Sepal.Width))
print(x)