Stata的编程基础.pdf
Stata 的编程基础
基本概念
如果我们需要反复执行一些命令,就可以将相关命
令存放在一个do文件中,然后保存并运行相应的do
文件即可。相比起一遍一遍地输入命令,这种方式
既方便又不容易出错。而另一些时候,我们会需要
编写程序,从而能用一个命令来实现某种结果。
一个程序应以program开头,以end结束。也就是说,
应呈现如下的形式:
program 程序名
相应的命令
end
1 Do文件
do文件是一种文本文件,其扩展名为“.do”。
要创建一个do文件,可以通过菜单栏中
Window 的下拉选项Do-file Editor来打开Do文件
编辑器,也可以直接点击工具栏的图标 。而
要执行一个do文件,可以键入以下命令:
do filename
这里,filename指相应的do文件的文件名。但
需要注意的一点是,这个filename.do文件需要
放在当前目录下,只有这样,才可以不写文件
的路径;否则,需要在文件名前写出完整路径
(而如果路径中有中文字符,一定要将全部路
径和文件名置于英文双引号之间)。
要查看当前目录,我们可输入命令:
cd
当然,我们也可以先将当前目录更改到我
们偏好的一个文件夹下,然后再将do文件
存放其中。例如,如下命令可以将当前目
录更改到d盘data文件夹下:
cd “D:\data”
这里,需要注意的一点是,cd命令要求其后
的文件夹原来就存在。
2 Stata程序和Do文件
Stata处理程序和处理do文件的方式是一样
的,包括参数的传递、结果的表达等。但
do文件和程序也存在一些小的差别。例如,
要激发一个do文件,我们需要键入“do
filename ”,而要激发一个程序,我们只需
要键入程序名称就可以。
• 例如,我们编写了一个简单的程序:
• program panel
• use panel_n51,clear
• xtsum(gap)
• end
• 并把它保存到名为“examp.do ”的文件中,且
把文件置于当前目录下。下面,我们要执行这
个do文件,就在Stata命令窗口输入如下的命令:
• do examp
• panel
• 在随后的时间里,我们如果还想运行同样的程
序,直接输入命令 “panel”就可以。
• 当然,我们也可采取一种更为简洁的方式,
即在do文件的最后一行加上程序名,这样,
当键入“do filename ”的时候,Stata就会在
加载完程序后就执行程序。但需要注意的
是,程序一旦被定义,Stata就不允许对其
重新定义。这样,如果我们随后又输入一
遍“do filename ”,Stata就会显示错误提示。
要解决这个问题,我们可以在do文件的第
一行输入这样的命令:
• program drop 程序名
• 这样,在定义该程序之前,如果内存中已有这
个程序,我们会先将其从内存中删掉。但这种
解决方案也存在一个问题:在打开Stata 的期间
第一次运行这个do文件,Stata会显示错误提示。
因为这时还没有定义程序,所有没有办法将其
删除。我们继续修正该命令为:
• capture program drop 文件名
• 将命令“capture ”置于其他命令之前,就表示
无论该命令是否作用,Stata也不显示错误提示,
且能继续执行下面的命令。事实上,在包含程
序的do文件中,我们经常可以看到程序的定义
之前有这样的命令。
• 综合了以上几点,我们前面的do文件可以修改
为这样的形式:
• capture program drop panel
• program panel
• use panel_n51,clear
• xtsum(gap)
• end
• panel
• 这里,第一行先检查是否有已定义的panel程
序,如果有就将其从内存中删除。第二到四行
是定义程序panel,最后一行是执行程序panel。
• 对于do文件中的命令,值得注意的是,每一行命令
都需要结束于一个硬回车(包括最后一行);除非
通过“#delimit ”命令设置其他符号为