28

私は ggplot2 を使用しており、次のデータを示すプロットを生成しようとしています。

df=data.frame(score=c(4,2,3,5,7,6,5,6,4,2,3,5,4,8),
              age=c(18,18,23,50,19,39,19,23,22,22,40,35,22,16))
str(df)
df

変数の度数プロット (以下のコードを参照) を行う代わりに、各 x 値の平均値のプロットを生成したいと考えています。そこで、各年齢レベルの平均スコアをプロットしたいと思います。x 軸の 18 歳で、y 軸のスコアが3になる場合があります。23 歳の場合、平均スコアは4.5などになります (編集: 平均値が修正されています)。これは理想的にはバープロットで表されます。

ggplot(df, aes(x=factor(age), y=factor(score))) + geom_bar()
Error: stat_count() must not be used with a y aesthetic.

ggplot2 を使用して R でこれを行う方法がわからず、そのようなプロットで何も見つからないようです。統計的には、プロットしたいプロットが正しいかどうかさえわかりませんが、それは別のストアです.

ありがとう!

4

3 に答える 3

61

では集計関数を使用できますggplot。同じ結果を得るには、次の 2 つの方法があります。

# Option 1
ggplot(df, aes(x = factor(age), y = score)) + 
  geom_bar(stat = "summary", fun = "mean")

# Option 2
ggplot(df, aes(x = factor(age), y = score)) + 
  stat_summary(fun = "mean", geom = "bar")

ここに画像の説明を入力

の代わりにggplot使用する古いバージョン:fun.yfun

ggplot(df, aes(x = factor(age), y = score)) + 
  stat_summary(fun.y = "mean", geom = "bar")
于 2012-08-08T05:17:00.947 に答える
8

私があなたを正しく理解していれば、次のようなことを試すことができます。

library(plyr)
library(ggplot2)
ggplot(ddply(df, .(age), mean), aes(x=factor(age), y=factor(score))) + geom_bar()
于 2012-08-08T05:08:20.080 に答える
6

aggregate()別のパッケージをロードする代わりに、ベース R で使用することもできます。

temp = aggregate(list(score = df$score), list(age = factor(df$age)), mean)
ggplot(temp, aes(x = age, y = score)) + geom_bar()
于 2012-08-08T05:16:42.240 に答える