1

我正在尝试绘制一个条形图,ggplot2其中每个因素都获得观察值的平均值。但是,该图是整个人口的平均值,并没有按因子分解/分组,这就是我想要的

这是图表: 在此处输入图像描述

当我计算组的平均值时,会有一个差异,这就是我想要绘制的。

  US      Foreign
1 89.76   124.02

这是数据框中整列的平均值

mean(clients$OrderSize)
[1] 96.71

这是数据框的结构。我有 CountryType 作为一个因素,因为这是我想要分组的:

str(clients)
'data.frame':   252774 obs. of  4 variables:
$ ClientID     : Factor w/ 252774 levels "58187855","59210128",..: 19 20 21 22 23 24 25 26 27 28 ...
$ Country      : Factor w/ 207 levels "Afghanistan",..: 196 60 139 196 196 40 40 196 196 196 ...
$ CountryType  : Factor w/ 2 levels "Foreign","US": 2 1 1 2 2 1 1 2 2 2 ...
$ OrderSize    : num  12.95 21.99 5.00 7.50 44.5 ...

这是我正在打的电话:

ggplot(data = clients, aes(x=CountryType, y=mean(OrderSize))) + geom_bar() + ylab("")

我尝试明确地将 CountryType 设置为一个没有运气的因素:

ggplot(data = clients, aes(x=factor(CountryType), y=mean(OrderSize))) + geom_bar() + ylab("")

我是否需要在打电话之前预先计算两组的平均值,ggplot或者我错过了什么?

4

1 回答 1

4

尝试更多类似的东西:

dat <- data.frame(x = rep(letters[1:2],each = 25),y = 1:50)
ggplot(dat,aes(x = x,y = y)) + 
    stat_summary(fun.y = mean,geom = "bar")

在此处输入图像描述

作为一般说明,请避免使用诸如aes(y = value)wherevalue是单个值的习惯用法,而不是数据框中列的名称。这不是ggplot2的用途。(虽然在某些情况下可以打破所有规则......)

于 2012-10-05T19:14:17.177 回答