我正在尝试从以下数据集中计算两个汇总统计信息(平均值和标准误差),其中Location和Adult都应该是因子。
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)
其中OverComp.m是Location x Adult的每个组合的计算平均值,而OverComp.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))
哪个产生我想要的统计数据,但不是我在ggplot2中绘制所需的格式(据我所知):
summary.OverComp
Location MeanOverComp.0 MeanOverComp.1 se.0 se.1
F Fiji 7.238095 8.454545 0.3792062 0.3023071
P Peru 6.893617 5.395833 0.4544304 0.3076155
我现在有点无能为力 - 不确定是否要采用不同的绘图方法,或者转换为上述输出,或者想出如何将Adult作为我的摘要编码中的一个因素。我有一个暗示reshape2可能涉及,但不知道如何处理。非常感谢您的帮助!
答案 0 :(得分:1)
您可以尝试data.table
(如果dat
是数据集)
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
答案 1 :(得分:0)
这是aggregate
的一个典型用途,一个基础(实际上是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的三个类别中有多个项目,则会产生更有吸引力的输出。