提供了the following数据框(见下文),该数据框是从调查问卷中提取的,询问了来自不同社区的人的安全感,我设法创建了一个条形图,显示每个社区的感知安全性和群体结果:
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")
我想用一个线图来覆盖这些结果,这个线图表示所有邻域中的每个安全类别(1,2,3或4)的平均值(这是没有分组结果),因此很容易知道是否特定社区超过或低于所有社区的平均值。但是,由于这是我在R上的第一份工作,我不知道如何使用数据框计算该平均值,然后将其覆盖在上一个条形图中。
答案 0 :(得分: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")
结果: