library(tidyverse)
library(rio)
library(here) # 仅是quarto文档中需要使用here()命令打开、保存文件
<- import(here("files/data/cepsw2studentCN.dta"))
std
<- std %>% filter(w2upmat==150 & w2upeng==150) %>%
std2 select(ids, w2clsids,schids, w2cogscore,w2mat,w2eng,w2a17,w2a28, w2d09,w2b1100) %>%
rename(nfriend=w2d09,expectation=w2a28) %>%
relocate(w2a17,expectation,.after = schids) %>%
drop_na() %>%
arrange(w2cogscore) %>%
mutate(sum=w2eng+w2mat)
export(std2,here("assignments/answers/yeyangyong_1Q1.dta"))
作业1参考答案
- 以”cepsw2studentCN.dta“为源生成一个新的数据,满足以下条件:
a.包含以下信息:学生id,w2班级代码,学校id, 认知能力原始得分,数学期中成绩, 英语期中成绩,父母关系好坏情况,父母的教育期望,好朋友的数量, 参加兴趣班/课外辅导班的情况;
f.将好朋友数量的变量命名为nfriend, 父母期望命名为expectation;
b.将父母好坏情况和父母教育期期望的变量放置在学校id后面;
d.选择出数学和英语成绩都是实行150分制的学生;
c.删除以上变量具有缺失值的个体;
e.按认知能力降序排列;
g.生成新变量表示学生英语和数学的加和;
- 以上题数据为基础,生成一个新的数据,包含每所学校的数学平均成绩和英语平均成绩。
<- std2 %>%
std3 group_by(schids) %>%
summarise(mean_mat=mean(w2mat),
mean_eng=mean(w2eng))
export(std3,here("assignments/answers/yeyangyong_1Q2.dta"))
- 以数据”cepsw2teacherCN.dta“为基础,生成一个只包括数学老师信息的数据,并将此数据与第1题中的数据合并生成一个新的数据。
<- import(here("files/data/cepsw2teacherCN.dta"))
tch <- tch %>%
tch2 filter(w2tchsubject==1) %>%
select(-schids)
<- std2 %>%
std_cls left_join(tch2,by="w2clsids")
export(std_cls,here("assignments/answers/yeyangyong_1Q3.dta"))
- 使用第1题的数据,将学生参与兴趣班的多个变量变成一个变量,取值变成另外一个变量,即将一个wide的数据变成long数据,并计算出每位学生参加兴趣班的数量总和。
<- std %>%
interest select(ids, w2b1101:w2b1111) %>%
pivot_longer(w2b1101:w2b1111,names_to = 'type',values_to = "amount") %>%
drop_na() %>%
group_by(ids) %>%
summarise(sum=sum(amount))
export(interest,here("assignments/answers/yeyangyong_1Q4.dta"))