1 拆分与连接数据文件要掌握的命令
为了折分或合并数据文件,要掌握下面的命令。这也是该小节的学习目标。
以上命令可以通过 help command 查看到具体的命令格式
2 案例:拆分与连接数据
1 横向拆分数据
要完成的任务:将 mydata 数据分成三个数据文件,分别为学生基本信息文件 student.dta, 经济学成绩文件 economy.dta 和数学成绩文件math.dta。拆分成为三个文件。
*-将 mydata 拆分成学生基本信息数据文件 student--------------------
use mydata, clear //打开数据文件
drop economy math //删除 economy 和 math 这两个变量
save student, replace //将删除后的数据集命名为 student,并保存到当前路径
*-将 mydata 拆分成经济学成绩数据文件 economy--------------------
use mydata, clear //打开数据文件
keep id economy //仅保留 id 和 economy 这两个变量在当前数据集中
save economy,replace //将当前数据集重新命令为 economy,并保存到当前路径
*--将 mydata 拆分成数学成绩数据文件 math--------------------
use mydata, clear
keep id math
save math,replace
2 纵向拆分数据
要完成的任务:将 mydata 数据分成二个数据文件,分别为女生数据集 female.dta 和男生数据集 male.dta。 原始数据同上。男女分离形式:
纵向拆分数据案例的参考操作
*----------------将 mydata 拆分成女生数据集 female--------------------
use mydata, clear
keep if gender==0 //仅保留女生的记录在当前数据集中
save female, replace
*----------------将 mydata 拆分成女生数据集 male--------------------
use mydata, clear
drop if gender==0 //将所有女生的记录全部从当前数据集中删除
save male, replace
3 案例:连接数据文件
1 纵向合并数据
纵向拆分数据案例的参考操作
*-将女生数据集 female 和男生数据集 male 合并为新数据 mydata1————
use male, clear //打开记录男生信息的数据文件 male
append using female //将记录女生信息的 female 文件追加到当前数据集中
save mydata1, replace
2 横向合并数据
要完成的任务(任务 4.4):将学生基本信息数据集 student.dta 和数学成绩
math.dta,经济学成绩 economy.dta 合并为新的数据集 mydata2. 原始数据同上。
横向拆分数据案例的参考操作
*---------将学生基本信息和学习成绩合并成新数据 mydata2---------
use economy,clear //打开经济学成绩数据文件
sort id //按学号排序
save economy, replace //重新保存一下
use student,c clear //打开学生基本信息数据文件
sort id //按学号排序
merge id using economy //以学号为关联,将学生的信息和成绩一一对应对接
tab _merge //显示对接情况,3 表示成功对接,1 和 2 表示未成功对接
drop _merge //去掉标识对接是否成功变量_merge
sort id //去掉变量_merge
save mydata2,replace
use math,clear
sort id
merge id using mydata2 //用学号关联,将 mydata2 与数学成绩 math 一一对接
drop _merge
save mydata2, replace
4 数据重整
1 要掌握的命令
2 案例:面板数据重整
任务数据集 mywide.dta 共有六个变量,其中后四个变量分别为 2003 年和2004 年的数据成绩和经济学成绩,现要求将数据转化为 mylong.dta 的格式,将年份单独做成变量,数学和经济学成绩则成为两个单独变量。
重整参考操作
*---------将学习成绩数据集 mywide 变换形式---------
use mywide, clear
reshape long math economy, i(id name) j(year) //数据重整,宽变长
save mylong, replace
*---------将学习成绩数据集 mylong 变换形式---------
reshape wide
*或者
use mylong, clear
reshape wide math economy, i(id name) j(yearr) //数据重整,长变宽
save mywide2, replace
3 案例:多列数据转为少数几列
任务:以下数据集虽然有很多列,但实际上只有一个变量,将该数据复制到stata 并转化成一项数据。
重整参考操作
*---------将多列数据变一列---------
*先将原始数据复制粘贴到 STATA 中
stack var1-var6, into(x) clear
drop _stack
4 案例:数据转置
任务 :将下面的数据行列互换
转置参考操作
*————-转置————-
use math,clear
xpose, clear
5 字符运算
clear
input str15 x
"10*123"
"543*21"
"12*422"
"43532*32134"
"4349*1"
end
gen a=strpos(x,"*")
gen b=substr(x,1,a-1)
gen c=substr(x,a+1,.)
结果: