我正在使用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.
只是不确定如何在R中使用ggplot2执行此操作,并且似乎无法在此类图上找到任何内容。从统计数据来看,我不知道我想绘制的情节是否是正确的事情,但这是一个不同的商店。
谢谢!
答案 0 :(得分:45)
答案 1 :(得分:8)
如果我理解你,你可以尝试这样的事情:
library(plyr)
library(ggplot2)
ggplot(ddply(df, .(age), mean), aes(x=factor(age), y=factor(score))) + geom_bar()
答案 2 :(得分:6)
您也可以在基础R中使用aggregate()
,而不是加载另一个包。
temp = aggregate(list(score = df$score), list(age = factor(df$age)), mean)
ggplot(temp, aes(x = age, y = score)) + geom_bar()