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("")

電話をかける前に、2つのグループの平均を事前に計算する必要があります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)whereが単一の値であるなどのイディオムは避けてください。これは、 ggplot2valueの使用目的ではありません。(ただし、特定の状況ではすべてのルールが破られる可能性があります...)

于 2012-10-05T19:14:17.177 に答える