添加均值时的箱线图错误

Box plot error when adding mean

我意识到之前有人问过这个问题,有人建议使用 ggplot、lattice 等。我的问题涉及根据分类变量将平均值添加到箱线图上。

这是我的代码,但它不起作用:

第 1 步:我使用 tapply 创建了一个向量,以根据孕产妇肥胖组获得 4 岁时 bmi z 分数的平均值:

means <- tapply(therapy$zbmi_4,therapy$Gruppe,mean,na.rm=TRUE) # calculate means

输出如下:

>means
Normal-weight         Obese 
-0.03207792        0.60130081

第 2 步:我根据孕产妇肥胖组创建了 4 岁时 bmi z 分数的简单箱线图:

plot(therapy$Gruppe,therapy$zbmi_4,
xlab = 'Maternal BMI groups',
ylab = 'Offspring BMI z-scores at 4 years',
cex.lab=1.5, cex.axis=1.4, cex.main=1.6, cex.sub=1.5,
col=c("white","grey"), main="Effect of maternal obesity",
pch=16,cex=1)
points(x=therapy$Gruppe,y=means,pch=19, col="red") # add means
legend("topleft", legend=c("P-value <0.0001"), bty = "n", cex=1.5)

错误信息是:

>points(x=therapy$Gruppe,y=means,pch=19, col="red", type="l") # add means
Error in xy.coords(x, y) : 'x' and 'y' lengths differ

我完全理解这个问题。因为,有 949 个观测值,只有 2 个均值。

> length(therapy$Gruppe)
[1] 949
> length(means)
[1] 2

现在,我是想太多了还是有一种非常简单的方法可以根据母体肥胖组(正常体重与肥胖)。如果能提供任何帮助和建议,我将不胜感激。

非常感谢您

只需在points()中使用x = 1:length(means)(根据您的组数)。这是一个 iris 的示例,因为您没有提供数据。

data(iris)

means <- tapply(iris$Sepal.Length, iris$Species, mean)

plot(iris$Species, iris$Sepal.Length)
points(x = 1:length(means), y = means, pch = 10)