如何";堆栈";及;“取消堆叠”;在R中,用于包含2个因素的汇总统计

如何";堆栈";及;“取消堆叠”;在R中,用于包含2个因素的汇总统计,r,ggplot2,reshape2,R,Ggplot2,Reshape2,我试图从以下数据集中计算两个汇总统计数据(平均值和标准误差),其中位置和成人都应该是因素 Location Adult OverComp F 1 7 P 1 8 P 0 10 F 1 3 F 0 11 我希望输出如下所示: Location Adult OverComp.m Over

我试图从以下数据集中计算两个汇总统计数据(平均值和标准误差),其中位置和成人都应该是因素

 Location    Adult    OverComp
 F           1        7
 P           1        8
 P           0        10
 F           1        3
 F           0        11
我希望输出如下所示:

Location    Adult     OverComp.m    OverComp.se
F           1         (mean)        (standard error)
F           0         (mean)        (standard error)
P           1         (mean)        (standard error)
P           0         (mean)        (standard error)
其中,OVERVP.m是位置x的每个组合的计算平均值,OVERVP.se是这些组合中每个组合的标准误差。我想要这种格式,因为我想在ggplot2中使用这种格式,以制作四种方式的条形图&se,位置的颜色编码

我已经走了这么远:

 summary.OverComp <-data.frame(
 + Location=levels(as.factor(data$FLocation)),
 + MeanOverComp=tapply(data$OverComp, list(data$FLocation,data$Adult), mean),
 + se=tapply(data$OverComp, list(data$FLocation,data$Adult),std.error))

我现在有点不知所措——不确定是采用不同的绘图方法,还是对上述输出进行转换,还是找出如何在摘要编码中加入成人因素。我有一个线索,重塑可能涉及,但不知道如何处理这一点。非常感谢您的帮助

这是聚合的典型用法,聚合是一个基本(实际上是stats pkg)函数:

> aggregate(dat$OverComp, # the values being aggregated
            dat[-3],   # the grouping factors
            function(Ov) c(mean=mean(Ov), sd=sd(Ov) ) #aggregation function(s)
            )  
  Location Adult    x.mean      x.sd
1        F     0 11.000000        NA
2        P     0 10.000000        NA
3        F     1  5.000000  2.828427
4        P     1  8.000000        NA

如果您在看到NA的三个类别中有多个项目,则会出现更具吸引力的输出。

您可以尝试
数据。表
(如果
dat
是数据集)


让您的生活更轻松,在ggplot中使用
stat\u summary
(参见帮助页面中的示例)或使用软件包(Hadley的plyr或dplyr或Matt的data.table)。OP希望计算SE而不是SDE。可能此变体:
库(plotrix);mean.se
> aggregate(dat$OverComp, # the values being aggregated
            dat[-3],   # the grouping factors
            function(Ov) c(mean=mean(Ov), sd=sd(Ov) ) #aggregation function(s)
            )  
  Location Adult    x.mean      x.sd
1        F     0 11.000000        NA
2        P     0 10.000000        NA
3        F     1  5.000000  2.828427
4        P     1  8.000000        NA
 library(plotrix)
 library(data.table)

 setDT(dat)[,list(OverComp.m=mean(OverComp),
                Overcomp.se=std.error(OverComp)), by=list(Location, Adult)]
     Location Adult OverComp.m Overcomp.se
 #1:        F     1          5           2
 #2:        P     1          8          NA
 #3:        P     0         10          NA
 #4:        F     0         11          NA