stata完全用不习惯……啊,而且stata遇到问题中文好难搜索,基本都是人大经济论坛上的,不成体系云里雾里,所以整理一下常用的命令,方便自己也方便后来人(如果看到我的博客的话XD)

stata在处理数据过程中,gen的变量只要不save dta,只是暂时的,关闭时不会出现。

创建变量

1
gen c=1 if

在分析的过程中,有些变量并没有在数据中提供,需要我们用原始数据或者回归的结果构造。常用的命令是 genegen

格式

1
gen educsqr=educ^2

egen命令相对复杂一些,它能生成一些gen命令无法生成的变量。例如可以生成wagesum为每个人的工资和,以及生成wagemedian为工资的中位数(median),wagemax为工资的最大值。

格式:

1
2
3
egen wagesum=sum(wage)
egen wagemedian=median(wage)
egen wagemax=max(wage)

更复杂的如想产生一个变量“wagemax”为相同教育水平里的最高工资。

格式:

1
egen wagemaxeduc=max (wage),by (educ)

genegen 有区别,比如:

1
2
3
4
5
clear
set obs 5
gen x=_n //生成新变量x, x 的取值从1 到5
gen y=sum(x) //求列累积和
egen z=sum(x) //求列总和,注意比较y 和Z 的不同

运行结果如下
gen egen

多个变量求和。写加号麻烦的时候,可以用

1
egen c=rowtotal(a b)

显示数据list,pid*表示以pid开头的所有变量,如pid1,pid2,pid3等等

1
list a b c pid*

merge数据

简单合并
有两个文件,第一个记录了100工人的性别和年龄,第二个记录了工资消费,要使四个变量出现在同一个文件中,则:

1
2
use firstdata
merge using seconddtat

附加合并
第一个文件记录50个工人的,第二个记录了另外50个的,合并只需要把第二个加到第一个文件的末尾即可:

1
2
use firstdata
append using seconddtat

附加合并
第一个文件记录100个人的期中成绩(可能有的人没有成绩)。第二个文件记录这100个人的期末成绩,要合并,则需要sort

1
2
3
4
5
6
7
8
9
use finale,clear
sort pid
save,replace
use mid,clear
sort pid
merge pid using final
save hehe,replace

将合并好的数据存储为hehe.dta
另外关于merge有详细一点的说明:merge 1:1 m:1 1:m

教材推荐
stata教程繁体字,看起来还挺靠谱
stata简明讲义,感觉一般,但是很基础
stata课件,讲的很系统,可以查询
英文教程,写的挺好的
stata十八讲,详细有案例,很好
github上的项目,很快的查询关键命令

文章目录