作业3参考答案

  1. 取分制是100分制的学校,计算每所学校英语成绩均分,以此均分做柱状图,且柱状图要排序和横向显示;
library(tidyverse)
library(rio)
library(sjmisc)
library(here)    # 仅是quarto文档中需要使用here()命令打开、保存文件
library(showtext)  # mac电脑调整字体,wins可不用
showtext_auto()   # mac电脑调整字体,wins可不用
std <- import(here("files/data/cepsw2studentCN.dta"))

std1 <- std %>% 
  filter(w2upeng==100) %>% 
  group_by(schids) %>% 
  summarise(eng_mean=mean(w2eng,na.rm=TRUE)) %>% 
  mutate(schids=factor(schids))

std1 %>% ggplot()+
  geom_col(aes(y=fct_reorder(schids, eng_mean),x=eng_mean))+
  labs(x="英语成绩学校均分",y="学校序号",
       title = "图1. 学生英语成绩学校均分排序图",
       caption = "数据来源:CEPS2014-2015年数据")+
  theme_minimal()

  1. 请选择样本中上海的学生,对学生身高与体重的信息进行必要清理后,做一个二者之间的散点图;
std2 <- std %>% 
  filter(w2frame==2) %>% 
  select(w2c01,w2c02) %>% 
  filter(between(w2c01,130,200)) %>% 
  filter(between(w2c02,25,100))

std2 %>% ggplot()+
  geom_point(aes(w2c01,w2c02),alpha=0.4)+
  labs(x="身高",y="体重",
       title = "图2. 学生身高与体重之间的散点图",
       caption = "数据来源:CEPS2014-2015年数据")+
  theme_minimal()

  1. 请作学生认知能力(原始分)的密度图,并将寄宿生和非寄宿生的密度图放在一张图上;
std3 <- std %>% 
  select(w2cogscore,w2b15) %>% 
  drop_na() %>% 
  mutate(w2b15=to_label(w2b15))

std3 %>% ggplot()+
  geom_density(aes(x=w2cogscore,fill=w2b15),alpha=0.4)+
  labs(x="英语成绩",y="密度",
       title = "图3.寄宿生与非寄宿生英语成绩分布图",
       caption = "数据来源:CEPS2014-2015年数据",
       fill="寄宿")+
  theme_minimal()

  1. 使用”primary_teachers.xlsx”数据,作甘肃、吉林、江苏三省的小学教师人数(teacher)随年份变化的线状图。
teacher <- import(here("files/data/primary_teachers.xlsx"))

teacher1 <- teacher %>% 
  filter(province=="甘肃" | province=="吉林" | province=="江苏")

teacher1 %>% ggplot()+
  geom_line(aes(x=year,y=teacher,color=province))+
  labs(x="年份",y="数量",color="省份",
       title = "图4. 甘肃、吉林、江苏三省小学教师人数变化图",
       caption = "数据来源:CEPS2014-2015年数据")+
  theme_minimal()