dplyr
、ggplot2
、ggmosaic
、pander
、tidyr
其中,ggmosaic
的安装方法:
devtools::install_github("haleyjeppson/ggmosaic")
library(ggmosaic)
# 设置工作路径并导入数据
setwd("C:\\Users\\lenovo\\Desktop\\rhomework")
load("C:\\Users\\lenovo\\Desktop\\rhomework\\brfss2013.RData")
# 加载需要使用的包
library(knitr)
library(pander)
library(ggplot2)
library(ggmosaic)
library(dplyr)
library(tidyr)
# 清洗数据,去除无意义数据和NAs,仅选取需要的列
cleaned_data<-brfss2013%>%mutate(age=as.character(X_age_g),depressed=as.character(misdeprd))%>%
filter(!is.na(age)&depressed!="None"&!is.na(depressed))%>%
select(age,depressed)
# 输出表格
table.data<-cleaned_data%>%group_by(age,depressed)%>%
summarise(count=n())%>%
spread(depressed,count)%>%
mutate(sum=`A little`+All+Most+Some,
`% Extremely depressed`=round(All/sum*100,digits = 1),
`% Severe depressed`=round(Most/sum*100,digits = 1),
`% Moderately depressed`=round(Some/sum*100,digits = 1),
`% Mild depressed`=round(`A little`/sum*100,digits = 1))%>%
select(age,`% Extremely depressed`,`% Severe depressed`,`% Moderately depressed`,`% Mild depressed`)
pandoc.table(table.data,caption="The proportion of different depressed degree in different age groups",justify = "center")
age | % Extremely depressed | % Severe depressed | % Moderately depressed | % Mild depressed |
---|---|---|---|---|
Age 18 to 24 | 2.8 | 6.9 | 33.3 | 57 |
Age 25 to 34 | 3.1 | 11.7 | 31.2 | 54 |
Age 35 to 44 | 5.2 | 11.2 | 32.9 | 50.6 |
Age 45 to 54 | 6.2 | 12.3 | 32.4 | 49.1 |
Age 55 to 64 | 6.9 | 11 | 33.2 | 48.9 |
Age 65 or older | 4.4 | 10.4 | 29.5 | 55.7 |
# 输出mosaic plot
final_data<-cleaned_data%>%mutate(depressed2=ifelse(depressed=="All","Extremely",ifelse(depressed=="Most","Severe",ifelse(depressed=="Some","Moderately",ifelse(depressed=="A little","Mild","")))))
names(final_data)<-c("AGE_GROUP","D","DEPRESSED_LEVEL")
final_data$DEPRESSED_LEVEL<-factor(final_data$DEPRESSED_LEVEL,levels = c("Mild","Moderately","Severe","Extremely"))
ggplot(final_data)+labs(title = "Age and Depressed Level Mosaic Plot",fill="Depressed Level")+
geom_mosaic(aes(x=product(AGE_GROUP),fill=DEPRESSED_LEVEL))+
theme(plot.title = element_text(hjust = 0.5),axis.title.y = element_text(vjust=1,size=12),axis.title.x = element_text(vjust=0.5,size = 12))