1 拆分与连接数据文件要掌握的命令

为了折分或合并数据文件,要掌握下面的命令。这也是该小节的学习目标。
image.png
以上命令可以通过 help command 查看到具体的命令格式
image.png

2 案例:拆分与连接数据

1 横向拆分数据

要完成的任务:将 mydata 数据分成三个数据文件,分别为学生基本信息文件 student.dta, 经济学成绩文件 economy.dta 和数学成绩文件math.dta。拆分成为三个文件。
image.png

  1. *-将 mydata 拆分成学生基本信息数据文件 student--------------------
  2. use mydata, clear //打开数据文件
  3. drop economy math //删除 economy 和 math 这两个变量
  4. save student, replace //将删除后的数据集命名为 student,并保存到当前路径
  5. *-将 mydata 拆分成经济学成绩数据文件 economy--------------------
  6. use mydata, clear //打开数据文件
  7. keep id economy //仅保留 id 和 economy 这两个变量在当前数据集中
  8. save economy,replace //将当前数据集重新命令为 economy,并保存到当前路径
  9. *--将 mydata 拆分成数学成绩数据文件 math--------------------
  10. use mydata, clear
  11. keep id math
  12. save math,replace

2 纵向拆分数据

要完成的任务:将 mydata 数据分成二个数据文件,分别为女生数据集 female.dta 和男生数据集 male.dta。 原始数据同上。男女分离形式:
纵向拆分数据案例的参考操作

  1. *----------------将 mydata 拆分成女生数据集 female--------------------
  2. use mydata, clear
  3. keep if gender==0 //仅保留女生的记录在当前数据集中
  4. save female, replace
  5. *----------------将 mydata 拆分成女生数据集 male--------------------
  6. use mydata, clear
  7. drop if gender==0 //将所有女生的记录全部从当前数据集中删除
  8. save male, replace

image.png

3 案例:连接数据文件

1 纵向合并数据

纵向拆分数据案例的参考操作
*-将女生数据集 female 和男生数据集 male 合并为新数据 mydata1————

  1. use male, clear //打开记录男生信息的数据文件 male
  2. append using female //将记录女生信息的 female 文件追加到当前数据集中
  3. save mydata1, replace

2 横向合并数据

要完成的任务(任务 4.4):将学生基本信息数据集 student.dta 和数学成绩
math.dta,经济学成绩 economy.dta 合并为新的数据集 mydata2. 原始数据同上。
横向拆分数据案例的参考操作

  1. *---------将学生基本信息和学习成绩合并成新数据 mydata2---------
  2. use economy,clear //打开经济学成绩数据文件
  3. sort id //按学号排序
  4. save economy, replace //重新保存一下
  5. use student,c clear //打开学生基本信息数据文件
  6. sort id //按学号排序
  7. merge id using economy //以学号为关联,将学生的信息和成绩一一对应对接
  8. tab _merge //显示对接情况,3 表示成功对接,1 和 2 表示未成功对接
  9. drop _merge //去掉标识对接是否成功变量_merge
  10. sort id //去掉变量_merge
  11. save mydata2,replace
  12. use math,clear
  13. sort id
  14. merge id using mydata2 //用学号关联,将 mydata2 与数学成绩 math 一一对接
  15. drop _merge
  16. save mydata2, replace

4 数据重整

1 要掌握的命令

image.png

2 案例:面板数据重整

任务数据集 mywide.dta 共有六个变量,其中后四个变量分别为 2003 年和2004 年的数据成绩和经济学成绩,现要求将数据转化为 mylong.dta 的格式,将年份单独做成变量,数学和经济学成绩则成为两个单独变量。
image.png
重整参考操作

  1. *---------将学习成绩数据集 mywide 变换形式---------
  2. use mywide, clear
  3. reshape long math economy, i(id name) j(year) //数据重整,宽变长
  4. save mylong, replace
  5. *---------将学习成绩数据集 mylong 变换形式---------
  6. reshape wide
  7. *或者
  8. use mylong, clear
  9. reshape wide math economy, i(id name) j(yearr) //数据重整,长变宽
  10. save mywide2, replace

3 案例:多列数据转为少数几列

任务:以下数据集虽然有很多列,但实际上只有一个变量,将该数据复制到stata 并转化成一项数据。
image.png
重整参考操作

  1. *---------将多列数据变一列---------
  2. *先将原始数据复制粘贴到 STATA
  3. stack var1-var6, into(x) clear
  4. drop _stack

4 案例:数据转置

任务 :将下面的数据行列互换
image.png
转置参考操作
*————-转置————-
use math,clear
xpose, clear

5 字符运算

  1. clear
  2. input str15 x
  3. "10*123"
  4. "543*21"
  5. "12*422"
  6. "43532*32134"
  7. "4349*1"
  8. end
  9. gen a=strpos(x,"*")
  10. gen b=substr(x,1,a-1)
  11. gen c=substr(x,a+1,.)

结果:
image.png