2015-02-12 2 views
0

Предоставлено the following dataframe (см. Ниже), которое было взято из вопросника, спрашивающего о предполагаемой безопасности для людей из разных районов, мне удалось создать планку штрихов, которая отображает воспринимаемую безопасность и результаты групп за каждый район:Оверлейный линейный график с штрих-кодом в ggplot2

questionnaire_raw = read.csv("https://www.dropbox.com/s/l647q2omffnwyrg/local.data.csv?dl=0") 

ggplot(data = questionnaire_raw, 
     aes(x = factor(Seguridad.de.tu.barrio..de.día.), # We have to convert x values to categorical data 
      y = (..count..)/sum(..count..)*100, 
      fill = neighborhoods)) + 
    geom_bar(position="dodge") + 
    ggtitle("Seguridad de día") + 
    labs(x="Grado de seguridad", y="% encuestados", fill="Barrios") 

enter image description here

Я хотел бы наложить эти результаты с линейным графиком, представляющим собой среднее каждой категории безопасности (1, 2, 3 или 4) во всех районах (это, без результаты группировки), поэтому легко понять, может ли конкретный сосед od превышает или находится в среднем по всем окрестностям. Однако, поскольку это моя первая работа с R, я не знаю, как вычислить это значение с помощью фреймворка данных, а затем наложить его на предыдущий барплот.

+0

насчет добавить что-то вроде '+ stat_summary (fun.data = "mean_cl_normal", геый = "строка" , mapping = aes (group = 1)) '(untested)? – lukeA

+0

результатов: 'Ошибка: stat_summary требует следующих недостающих эстетических характеристик: y' – Rentrop

ответ

4

использование data.table для данных манипуляции и lukeA своего комментария:

require(ggplot2) 
require(data.table) 
setDT(questionnaire_raw) 
setnames(questionnaire_raw, c("Timestamp", "Barrios", "Grado")) 

plot_data <- questionnaire_raw[,.N, by=.(Barrios,Grado)] 
ggplot(plot_data, aes(x=factor(Grado), y = N, fill = Barrios)) + 
    geom_bar(position="dodge", stat="identity") + 
    stat_summary(fun.y=mean, geom = "line", mapping = aes(group = 1)) + 
    ggtitle("Seguridad de día") + 
    labs(x="Grado de seguridad", y="% encuestados", fill="Barrios") 

Результат: enter image description here

+0

Большое спасибо за ваш ответ. Он работает нормально, хотя я должен понять, что вы делаете, потому что исходный dataframe намного больше (у нас есть 72 переменных, а не 3), кажется, что я не могу воспроизвести строку setnames. Я думаю, мне нужно создать вектор со всеми 72 переменными, но поскольку я никогда не слышал об этой функции, я не уверен. Я попробую создать новый фреймворк с нужными переменными. – ccamara

+1

Строка 'setnames' просто Изменяет имена столбцов данных. Взгляните на данные до и после. Это не сложно. – Rentrop

+0

Я перечитываю ваш код и честно (и смутно), я не понимаю почти ничего, что вы делаете на нем. Мне все еще нужно много узнать о R ... – ccamara

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