【发布时间】:2012-07-24 14:02:30
【问题描述】:
我有一个问题。我想用平均值和误差线制作一个条形图,其中它被分组为两个因素。为了获得平均值和标准误差,我使用了函数 tapply。
但是,对于其中一个因素,我想降低一级。
所以我所做的就是:
dataFE <- data[-which(plant=="FS"),] # this works fine, I get exactly the data set I want without the FS level of the factor plant
然后为了得到平均误差和标准误差,我使用这个:
means <- with(dataFE, as.matrix(tapply(leaves, list(plant, Orchestia), mean), nrow=2)
e <- with(dataFE, as.matrix(tapply (leaves, list(plant, Orchestia), function(x) sd(x)/sqrt(length(x))), nrow=2))
然后发生了一些奇怪的事情,它不计算 FS,但是它把它放在一个带有 NA 的表中:
row.names no yes
1 F 7.009022 5.307185
2 FS NA NA
3 S 2.837139 2.111054
这是我不想要的,因为如果我在 barplot2(包 gplots)中使用它,那么我会得到一个 FS 的空栏,而那个根本不应该在那里。
所以任何使用都有解决方案或其他方法来获得漂亮的条形图:)。不管怎么说,还是要谢谢你!
【问题讨论】:
-
你能给我们你的数据的sn-p吗?您可以为此使用
dput。没有那个,我只是猜测一下:您的列plant是一个因素,虽然您删除了具有该值的行,但"level" FS仍然存在。使用levels(data$plant)查看。然后你可以使用droplevels来摆脱它。 -
@Justin:我建议将其发布为答案。