stata入门中文讲义(8)

2019-08-31 12:13

第4章 数据处理的组织方法

1、可执行程序的编写与执行

方法1:do文件

do文件是一个文本文件,里面包含了相关的Stata命令。执行do文件时,Stata会逐条执行do

文件里面的命令。do文件可以运用各种文字编辑器编辑,可以使用Windows自带的记事本,或Stata自带的文本编辑器(可以用doedit命令调用),最好不要使用Word等加格式的编辑器。比如一个简单的do文件:hello.do,内容如下:

*Begin hello.do display “Hello, world” exit

*End hello.do

在Stata命令输入窗口输入

.do hello

Stata就会运行do文件里面的命令,其中带*的是注释语句,Stata会自动忽略,直接执行

display “Hello, world”, 在Stata显示区将结果输出。

方法2:交互式-program-命令

另一种方式是在Stata命令窗口直接交互式的使用program命令定义程序,比如在命令窗口输

入:

.program hello

1. display “Hello, world” 2. end

当我们想运行该程序时,直接在命令窗口输入

.hello

则Stata即可运行刚才输入的程序hello

36

在实际使用中,我们很少直接使用交互式定义程序。另外,如果我们想修改该程序,比如我们

在display “Hello, world”之后再加一条命令display “Hi, back”。你在命令窗口输入 .program hello Hello already defined r(110)

Stata会返回错误,因为Stata会记住程序定义。如果你想重新定义一个程序,必须先利用命令

program drop 把同名程序清除: .program drop hello .

.program hello

1. display “Hello, world” 2. display “Hi, back” 3. end

使用program命令定义程序的另一个问题是program不知道Stata内部命令的名称,如果你定义

的程序名称和Stata内容命令同名,当你运行该程序时,实际将执行Stata的内容命令。比如你定义d程序 .program d

1. display “hello, world” 2. end

当执行上述命令时,实际运行的将是describe命令。

第3个问题是program不检测语法,因而如果定义的program中命令有错误,在运行该程序时将出错。如果program定义的程序命令行很长,可以打开Stata的跟踪功能寻找可能发生的错误。 .set trace on .set trace off

打开跟踪时不要忘记关掉,不然你将发现Stata的输出内容会很多。当修改比较复杂的程序

时,可以利用

.set trace on /*打开跟踪*/ .set more off /*将分屏显示关闭*/

.log using junk, replace /*开始一个名为junk.smcl的日志文件*/

37

.运行程序

.log close /*关闭日志文件*/ .set more on /*将分屏显示打开*/

第4个问题是一个单个program文件包含不能超过3500行命令,并且在Stata/SE要小于

135600个字符。

第5个问题不能编辑修改程序。

方法3:在do文件中使用program命令

在do文件中使用program的好处是随时可以修改你的程序,比如我们建议一个hello.do文件

*BEGIN hello.do program hello end exit

*END hello.do

让我们运行一个该do文件,

.do hello .program hello hello already defined r(110); end of do file

出错了,为什么,因为刚才我们利用充互方式已经定义了一个同名的hello程序,因此要运行

我们的do文件,必须先将内存中的同名程序清除,利用 .program drop hello

.do hello <-我们输入的 .program hello <-Stata输入的 1. display “Hello, world” 2. end

display “Hello, world”

38

.exit end of do-file

我们执行hello.do文件时,才把程序hello调入系统,但Stata并没有执行该程序。这时,我们

在命令窗口直接输入程序名,Stata才会执行程序,如下: .hello Hello, world

我们也可以用run hello.do命令将do文件中的程序调入系统,run和do相同,但run不会将do

文件中的命令行显示出来。

方法4:do文件合并

do文件可以做更多,交互式能做的,都可以放在do文件中,因而,我们可以将program

程序定义,及程序执行全部放在同一个do文件中,比如 *BEGIN hello.do program hello end hello exit

*END hello. Do

用do hello执行该do文件,系统会提示错误,因为我们系统中刚才已经定义了hello程

序,所以要先用program drop hello清除掉, 我们可以直接在do文件中将该条命令加入第1行,但如果系统中没有hello程序,运行清除命令时又会提示出错,我们可以在清除命令前加入

capture,表示capture后面的命令出错时,Stata不会报错,也不会停下来,会直接执行后面的语句,但它会将错误保存下来。修改后的程序如下: *BEGIN hello.do capture program drop hello program hello end hello

39

display \display \

exit

*END hello. Do

方法5:ado 文件

ado文件实际上是以do文件形式写program程序方式的扩展,称为自执行文件,其运行类

似于Stata内部命令。加到文件hello.do *BEGIN hello.do program hello end

*END hello.do

直接将do文件保存为hello.ado,内容不变,即

*BEGIN hello.ado program hello end

*END hello.ado

运行该ado文件时,先用program drop hello清除系统内的hello程序,然后在命令窗口直

接输入 .hello

注意:在修改ado文件后,运行之前要用discard清除原ado文件,从而刷新ado文件,

否则你可能发现修改很多次的ado文件运行结果一直没有改变。

display \display “Hello, world”

2、do文件的组织

3、数据导入

Stata数据格式文件,直接用use 可以打开,如果是利用电子表格文件转化来的文本文件,可以使用insheet using 命令导入。如果数据具有固定格式,需要用infile命令导入。假设我们要处理一个包含家庭信息及个人信息的数据,基本数据信息如下:

40


stata入门中文讲义(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:废旧轮胎回收利用创业方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: