什么是计算两个子组之间统计检验的ggplot2/plyr方法?

Mic*_*ael 8 r ggplot2 plyr

我是R的新手,并且已经开始欣赏ggplot2和plyr的优雅.现在,我正在尝试分析一个我不能在这里分享的大型数据集,但我用钻石数据集重建了我的问题(为方便起见缩短了).无需再费周折:

diam <- diamonds[diamonds$cut=="Fair"|diamonds$cut=="Ideal",]
boxplots <- ggplot(diam, aes(x=cut, price)) + geom_boxplot(aes(fill=cut)) + facet_wrap(~ color)
print(boxplots)
Run Code Online (Sandbox Code Playgroud)

情节产生的是一组箱图,比较两个削减"公平"和"理想"的价格.

我现在非常希望通过t.test或wilcox.test统计比较每个颜色子组(D,E,F,..,J)的两个切割.

我将如何以与ggplot2-syntax一样优雅的方式实现它?我假设我会使用plyr-package中的ddply,但我无法弄清楚如何将两个子组提供给计算相应统计信息的函数.

Ben*_*ker 12

我想你正在寻找:

library(plyr)
ddply(diam,"color",
      function(x) {
          w <- wilcox.test(price~cut,data=x)
          with(w,data.frame(statistic,p.value))
      })
Run Code Online (Sandbox Code Playgroud)

(代t.testwilcox.test似乎很好地工作了.)

结果:

  color statistic      p.value
1     D  339753.5 4.232833e-24
2     E  591104.5 6.789386e-19
3     F  731767.5 2.955504e-11
4     G  950008.0 1.176953e-12
5     H  611157.5 2.055857e-17
6     I  213019.0 3.299365e-04
7     J   56870.0 2.364026e-01
Run Code Online (Sandbox Code Playgroud)