2012-10-05 5 views
1

Я пытаюсь построить гистограмму в ggplot2, где каждый фактор получает среднее значение наблюдений. Тем не менее, сюжет среднее для всего населения, а не вспыхивает/группирования фактора, который является то, что я хочуГистограмма в ggplot не группируется в

Вот диаграмма: enter image description here

Когда я вычислить среднее для групп, есть разница, которую я хочу построить.

US  Foreign 
1 89.76 124.02 

Здесь среднее значение всей колонны в dataframe

mean(clients$OrderSize) 
[1] 96.71 

Здесь структура dataframe. У меня есть 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("") 

И я попробовал explictely установка CountryType как фактор с не удачи:

ggplot(data = clients, aes(x=factor(CountryType), y=mean(OrderSize))) + geom_bar() + ylab("") 

мне нужно заранее рассчитать средства для двух групп, прежде чем я называю ggplot или я что-то отсутствует ли?

ответ

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

enter image description here

В общем плане, избежать идиомы как aes(y = value) где value одно значение, а не имя столбца в кадре данных. Это не так, как ggplot2 предназначен для использования. (Хотя все правила могут быть нарушены при определенных обстоятельствах ...)

+1

Спасибо. Я получил это, чтобы работать правильно. Один вопрос re: 'stat_summary' - зачем использовать' geom = "bar" 'там и явно не вызывать' geom_bar'? Я не смущен 'ggplot', используя' qplot' по сравнению с 'geom_bar' или' geom = bar', просто задаваясь вопросом, почему существуют разные реализации одной и той же вещи. – mikebmassey

+1

@mikebmassey 'stat_summary' - это разные звери. Идея состоит в том, что она переводит вычисления сводной статистики ** и ** спецификацию геометрии в один вызов. Выполнение чего-то вроде 'ggplot (...) + stat_summary (...) + geom_bar()' без спецификации геометрии в stat вызовет ошибку, я полагаю. – joran

+1

@mikebmassey Я должен добавить, что все 'stat_' ведут себя так, а не только' stat_summary'. Вы должны указать геометрию в вызове stat. – joran

Смежные вопросы