我本来期望在这两次运行中看到相同的结果,但实际上它们是不同的。这让我怀疑自己是否真正了解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的建议,我逐行检查了结果,并使用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)