Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用计算统计对ggplot2箱线图中的x轴进行排序_R_Ggplot2 - Fatal编程技术网

R 使用计算统计对ggplot2箱线图中的x轴进行排序

R 使用计算统计对ggplot2箱线图中的x轴进行排序,r,ggplot2,R,Ggplot2,我有一些数据要使用ggplot2显示为方框图。它基本上是计数,由另外两个变量分层。下面是一个数据示例(实际上还有很多,但结构是一样的): 对于每个标记,在条件1和条件2中都有固定数量的观测值(这里是3,但在实际数据中要多得多)。我想要一个如下所示的方框图('s'是如上所述排列的数据帧): 这很好,但我希望能够通过Wilcoxon测试中的p值对每个标记的x轴进行排序。例如,对于上述数据,值将是(分别针对标签A、B和C): 这将导致x轴上的顺序A,C,B(从大到小)。但我不知道如何将这些信息添加到

我有一些数据要使用ggplot2显示为方框图。它基本上是计数,由另外两个变量分层。下面是一个数据示例(实际上还有很多,但结构是一样的):

对于每个标记,在条件1和条件2中都有固定数量的观测值(这里是3,但在实际数据中要多得多)。我想要一个如下所示的方框图('s'是如上所述排列的数据帧):

这很好,但我希望能够通过Wilcoxon测试中的p值对每个标记的x轴进行排序。例如,对于上述数据,值将是(分别针对标签A、B和C):


这将导致x轴上的顺序A,C,B(从大到小)。但我不知道如何将这些信息添加到我的数据中(特别是在标记级别附加一个p值,而不是添加一整列),或者如何使用它来更改x轴顺序。非常感谢您的帮助。

这里有一个方法。第一步是计算每个
标记的p值。我们通过使用
ddply
来实现这一点,它通过标签分割数据,并使用
wilcox.test的公式接口来计算p值。plot语句根据其p值对标记重新排序

library(ggplot2); library(plyr)
dfr2 <- ddply(dfr, .(TAG), transform, 
  pval = wilcox.test(Count ~ Condition)$p.value)

qplot(reorder(TAG, pval), Count, fill = factor(Condition), geom = 'boxplot', 
  data = dfr2)
库(ggplot2);图书馆(plyr)

dfr2这里有一种方法。第一步是计算每个
标记的p值。我们通过使用
ddply
来实现这一点,它通过标签分割数据,并使用
wilcox.test的公式接口来计算p值。plot语句根据其p值对标记重新排序

library(ggplot2); library(plyr)
dfr2 <- ddply(dfr, .(TAG), transform, 
  pval = wilcox.test(Count ~ Condition)$p.value)

qplot(reorder(TAG, pval), Count, fill = factor(Condition), geom = 'boxplot', 
  data = dfr2)
库(ggplot2);图书馆(plyr)

dfr2可能重复我知道另一个问题是关于条形图的,但实际上是同一个问题,使用相同的解决方案:确保
TAG
是有序因子。两个问题合一。还有一个可能是重复的感谢指针,尽管那些其他问题(除非我弄错了)似乎不是关于使用计算统计进行排序,而是使用数据帧中已有的信息。这似乎是一个微小的区别,但这是我所寻找的重要部分。事实上,我找到了如何实现我想要的结果,方法是先计算p值,手动将它们附加到数据中,然后按该列对标记因子排序。Ramnath的答案比我提出的要好得多。我知道另一个问题是关于条形图的,但实际上是同一个问题,采用相同的解决方案:确保
TAG
是一个有序因子。两个问题合一。还有一个可能是重复的感谢指针,尽管那些其他问题(除非我弄错了)似乎不是关于使用计算统计进行排序,而是使用数据帧中已有的信息。这似乎是一个微小的区别,但这是我所寻找的重要部分。事实上,我找到了如何实现我想要的结果,方法是先计算p值,手动将它们附加到数据中,然后按该列对标记因子排序。Ramnath的答案比我想到的要好得多。
> wilcox.test(c(5,6,6),c(6,7,7))$p.value
[1] 0.1572992
> wilcox.test(c(1,2,2),c(12,8,10))$p.value
[1] 0.0765225
> wilcox.test(c(10,12,13),c(7,6,10))$p.value
[1] 0.1211833
library(ggplot2); library(plyr)
dfr2 <- ddply(dfr, .(TAG), transform, 
  pval = wilcox.test(Count ~ Condition)$p.value)

qplot(reorder(TAG, pval), Count, fill = factor(Condition), geom = 'boxplot', 
  data = dfr2)