Ответ 1
Другое решение
ggplot(df, aes(x=factor(age), y=score)) + stat_summary(fun.y="mean", geom="bar")
Я использую 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. Поэтому я хочу составить средний балл на каждом возрастном уровне. В 18 лет по оси x мы можем иметь 3 по оси y для оценки. В возрасте 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 и, похоже, не может найти что-либо на таких графиках. По статистике, я не знаю, подходит ли сюжет, который я желаю сделать, даже правильная вещь, но это другой магазин.
Спасибо!
Другое решение
ggplot(df, aes(x=factor(age), y=score)) + stat_summary(fun.y="mean", geom="bar")
Если бы я понял вас правильно, вы могли бы попробовать что-то вроде этого:
library(plyr)
library(ggplot2)
ggplot(ddply(df, .(age), mean), aes(x=factor(age), y=factor(score))) + geom_bar()
Вы также можете использовать aggregate()
в базе R вместо загрузки другого пакета.
temp = aggregate(list(score = df$score), list(age = factor(df$age)), mean)
ggplot(temp, aes(x = age, y = score)) + geom_bar()