绘制ggplot2中每个级别的平均值

ATM*_*hew 18 r ggplot2

我正在使用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
Run Code Online (Sandbox Code Playgroud)

我没有做变量的频率图(见下面的代码),而是想生成每个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.
Run Code Online (Sandbox Code Playgroud)

只是不确定如何使用ggplot2在R中执行此操作,并且似乎无法在此类图上找到任何内容.从统计数据来看,我不知道我想绘制的情节是否是正确的事情,但这是一个不同的商店.

谢谢!

DrD*_*Dom 46

另一种方法

ggplot(df, aes(x=factor(age), y=score)) + stat_summary(fun.y="mean", geom="bar")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


joh*_*nes 8

如果我理解你,你可以尝试这样的事情:

library(plyr)
library(ggplot2)
ggplot(ddply(df, .(age), mean), aes(x=factor(age), y=factor(score))) + geom_bar()
Run Code Online (Sandbox Code Playgroud)


A5C*_*2T1 6

您也可以aggregate()在base R中使用,而不是加载另一个包.

temp = aggregate(list(score = df$score), list(age = factor(df$age)), mean)
ggplot(temp, aes(x = age, y = score)) + geom_bar()
Run Code Online (Sandbox Code Playgroud)