Chapter4 数据整理
4.1 拆分与连接数据文件要掌握的命令
为了折分或合并数据文件,要掌握下面的命令。这也是该小节的学习目标。
4.2 案例:拆分与连接数据
4.2.1 横向拆分数据
要完成的任务(任务4.1)将mydata 数据分成三个数据文件,分别为学生基本 信息文件student.dta, 经济学成绩文件economy.dta 和数学成绩文件 math.dta。
原始数据文件mydata.dta
将要新生成的三个数据文件如下 student.dta
economy.dta
math.dta
横向拆分数据案例的参考操作
*-将mydata 拆分成学生基本信息数据文件student-------------------- cd d:/mydata/ //在d:/mydata 文件夹下操作 use mydata, clear //打开前面已经创建的数据文件 drop economy math //删除economy 和math 这两个变量
save student, replace //将删除后的数据集命名为student,并保存到当前路径 *-将mydata 拆分成经济学成绩数据文件economy-------------------- use mydata, clear //打开第3 讲已经创建的数据文件
keep id economy //仅保留id 和economy 这两个变量在当前数据集中
save economy,replace //将当前数据集重新命令为economy,并保存到当前路径
*--将mydata 拆分成数学成绩数据文件math-------------------- use mydata, clear keep id math
save math,replace 4.2.2 纵向拆分数据
要完成的任务(任务4.2):将mydata 数据分成二个数据文件,分别为女生数据 集female.dta 和男生数据集 male.dta。 原始数据同上。该任务完成后将要形 成的数据如下 female.dta
male.dta
纵向拆分数据案例的参考操作
*----------------将mydata 拆分成女生数据集female-------------------- use mydata, clear //打开第3 讲已经创建的数据文件 keep if gender==0 //仅保留女生的记录在当前数据集中 save female, replace
*----------------将mydata 拆分成女生数据集male-------------------- use mydata, clear
drop if gender==0 //将所有女生的记录全部从当前数据集中删除 save male, replace
4.3 案例:连接数据文件
4.3.1 纵向合并数据
要完成的任务(任务4.3):将女生数据集female.dta 和男生数据集 male.dta 合并为新的数据集mydata1 原始数据同上。 纵向拆分数据案例的参考操作
*-将女生数据集female 和男生数据集male 合并为新数据mydata1-------- use male, clear //打开记录男生信息的数据文件male
append using female //将记录女生信息的female 文件追加到当前数据集中 save mydata1, replace 4.3.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.4 数据重整
4.4.1 要掌握的命令 要掌握下面的命令。
4.4.2 案例:面板数据重整
任务4.5 数据集mywide.dta 共有六个变量,其中后四个变量分别为2003 年和 2004 年的数据成绩和经济学成绩,现要求将数据转化为mylong.dta 的格式,将 年份单独做成变量,数学和经济学成绩则成为两个单独变量。 原始数据mywide.dta
转换后的数据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
4.4.3 案例:多列数据转为少数几列
任务4.6 以下数据集虽然有很多列,但实际上只有一个变量,将该数据复制到 stata 并转化成一项数据
重整参考操作
*---------将多列数据变一列--------- *先将原始数据复制粘贴到STATA 中 stack var1-var6, into(x) clear drop _stack
4.5 案例:数据转置
任务4.7 :将下面的数据行列互换 原始数据 math.dta
互换后的数据应该为: newmath.dta
转置参考操作
*---------转置--------- use math,clear xpose, clear
4.6 字符运算
clear
input str15 x \\\\\end
gen a=strpos(x,\gen b=substr(x,1,a-1) gen c=substr(x,a+1,.) l