Chapter3——STATA数据整理
Chapter3——STATA数据整理
0. 数据整理关键命令
命令 | 命令解释 | 用法示例 |
---|---|---|
drop | 删除变量或观察值 | drop math |
keep | 保留变量或观察值 | keep math |
append | 将两个数据集拼接(观察值拼接) | append using math |
merge | 将两个数据集合并(变量合并) | merge id using math |
reshape | 将数据重整 | reshape long inc,i(id) j(yr) |
stack | 将多列数据转换成一列数据 | stack a b c d, into(e f) |
xpose | 数据转置 |
xpose,clear |
流程图解释:
graph TD
数据A --> 数据连接与拆分
数据B --> 数据连接与拆分
数据连接与拆分 --> append --> 数据A和数据B上下纵向合并
数据连接与拆分 --> merge --> 数据A和数据B左右横向合并
1. 拆分数据
对于数据的拆分主要分成横向拆分和纵向拆分两种类型,横向拆分主要是通过保留和删除数据实现的,而纵向拆分主要是用过append
和merge
来实现不同纵向行间的合并与拆分。
- 横向拆分数据
案例:将 mydata 数据分成三个数据文件,分别为学生基本信息文件student.dta, 经济学成绩文件 economy.dta 和数学成绩文件 math.dta。
cd d:/mydata/ //导入数据
use mydata,clear
drop economy math //删除economy和math的变量
save student,replace //保存删除变量后的文件为student
use mydata,clear
keep id economy //仅仅保持id和economy两个变量
save economy,clear //保存删除变量后的文件为economy
use mydata,clear
keep id math
save math,replace
- 纵向拆分数据
案例:将 mydata 数据分成二个数据文件,分别为女生数据集 female.dta 和男生数据集 male.dta。
*讲mydata拆分成仅有女生数据集female.dta
use mydata,clear
keep if gender==0
save female,replace
*将mydata拆分成仅有男生数据集male.dta
use mydata,clear
drop if gender==0
save male,replace
2. 连接数据集
- 纵向合并数据集
案例:将女生数据集 female.dta 和男生数据集 male.dta 合并为新的数据集 mydata1 原始数据同上。
use male.dta
append using female //使用female的数据集并入male中
save mydata1,replace
- 横向合并数据集
案例:将学生基本信息数据集 student.dta 和数学成绩 math.dta,经济学成绩economy.dta 合并为新的数据集 mydata2. 原始数据同上。
use economy,clear
sort id //对economy的数据id进行sort
save economy,replace
use student,clear
sort id
merge id using economy //使用economy的数据集匹配student数据集中的id,以id作为关联,将学生的信息和成绩一一对接
tab _merge //显示对接情况,_merge显示为3表示对接成功,显示1和2则为为成功对接
drop _merge //删除数据集中的表示对接是否成功的变量_merge
sort id
save mydata2,replace
use math,clear
sort id
save math,replace
use mydata2,clear
merge id using math
drop _merge
save mydata2,replace
3. 数据重整
- 关键命令
命令 | 命令解释 | 用法示例 |
---|---|---|
reshape | 将数据重整 | reshape long inc,i(id) j(yr) |
stack | 将多列数据转换成一列数据 | stack a b c d, into(e f) |
xpose | 数据转置 | xpose, clear |
- 面板数据重整
案例:数据集 mywide.dta 共有六个变量,其中后四个变量分别为 2003 年和2004 年的数据成绩和经济学成绩,现要求将数据转化为 mylong.dta 的格式,将年份单独做成变量,数学和经济学成绩则成为两个单独变量的面板数据集。
use mywide,clear
reshape long math economy,i(id name) j(year)
save mylong,repalce
reshape wide
- 多列数据转成少数几列数据
案例:以下的mystack数据集分成8行6列,但实际上只有一个变量x,将该数据恢复成只有一列的var被into到x变量的数据。
use mystack,clear
stack var1-var6,into(x),clear
drop _stack
4. 数据转置
案例:将math数据集中的数据进行行列互换
use math,clear
xpose,clear