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, clearkeep id mathsave math,replace
2 纵向拆分数据
要完成的任务:将 mydata 数据分成二个数据文件,分别为女生数据集 female.dta 和男生数据集 male.dta。 原始数据同上。男女分离形式:
纵向拆分数据案例的参考操作
*----------------将 mydata 拆分成女生数据集 female--------------------use mydata, clearkeep if gender==0 //仅保留女生的记录在当前数据集中save female, replace*----------------将 mydata 拆分成女生数据集 male--------------------use mydata, cleardrop if gender==0 //将所有女生的记录全部从当前数据集中删除save male, replace
3 案例:连接数据文件
1 纵向合并数据
纵向拆分数据案例的参考操作
*-将女生数据集 female 和男生数据集 male 合并为新数据 mydata1————
use male, clear //打开记录男生信息的数据文件 maleappend 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 //去掉标识对接是否成功变量_mergesort id //去掉变量_mergesave mydata2,replaceuse math,clearsort idmerge id using mydata2 //用学号关联,将 mydata2 与数学成绩 math 一一对接drop _mergesave mydata2, replace
4 数据重整
1 要掌握的命令
2 案例:面板数据重整
任务数据集 mywide.dta 共有六个变量,其中后四个变量分别为 2003 年和2004 年的数据成绩和经济学成绩,现要求将数据转化为 mylong.dta 的格式,将年份单独做成变量,数学和经济学成绩则成为两个单独变量。
重整参考操作
*---------将学习成绩数据集 mywide 变换形式---------use mywide, clearreshape long math economy, i(id name) j(year) //数据重整,宽变长save mylong, replace*---------将学习成绩数据集 mylong 变换形式---------reshape wide*或者use mylong, clearreshape wide math economy, i(id name) j(yearr) //数据重整,长变宽save mywide2, replace
3 案例:多列数据转为少数几列
任务:以下数据集虽然有很多列,但实际上只有一个变量,将该数据复制到stata 并转化成一项数据。
重整参考操作
*---------将多列数据变一列---------*先将原始数据复制粘贴到 STATA 中stack var1-var6, into(x) cleardrop _stack
4 案例:数据转置
任务 :将下面的数据行列互换
转置参考操作
*————-转置————-
use math,clear
xpose, clear
5 字符运算
clearinput str15 x"10*123""543*21""12*422""43532*32134""4349*1"endgen a=strpos(x,"*")gen b=substr(x,1,a-1)gen c=substr(x,a+1,.)
结果:
