clear all
这将清除运行此do文件之前所执行的任何数据或存储的结果。
3、打开数据集
通常,您将使用use命令加载数据。然而,因为我们使用的是Stata自带的自动数据集,所以你可以用sysuse打开它:
sysuse auto
每次运行这个do文件时,它都会将数据的一个新副本从磁盘加载到内存中。这意味着您不必担心以前可能犯的任何错误,也不必跟踪一般数据集的当前状态。
4、开始操作
现在可以开始工作了。现在只需要添加:
list make ifforeign
当然,在这一点上,真正的do文件将有更多(而且更有用)的命令。
5、保存您的数据
执行数据争论的文件将更改数据集,并需要在最后保存数据的新版本。这个do文件不改变数据,但是保存它以供练习:
save autoV2, replace
replace选项再次允许Stata覆盖以前试图运行do文件的输出。
永远不要将输出数据集保存在输入数据集之上。(换句话说,开始的use命令和结束的save命令不应该作用于同一个文件。)如果这样做,写入do文件时使用的数据集将不复存在。do文件可能根本不会运行,即使运行了,也很可能不会给出相同的结果。如果结果是你犯了一个错误,你可能不得不回到你的原始数据,重新开始。
6、关闭日志文件
do文件的最后一行通常是:
logclose
如果不关闭do文件的日志,那么在do文件完成后运行的任何命令都将记录在日志中。这包括do文件在到达日志关闭命令之前崩溃的情况(因此在开始时捕获日志关闭)。明显占据的内存
可复制性的另一个关键是总是从空白板开始,所以下一个命令应该是:
运行Do文件
运行do文件最简单的方法是在do文件编辑器中按Ctrl-d,或单击最右边的图标,看起来像一些代码上的“play”按钮。如果您首先只选择do文件的一部分,那么将只运行该部分。
运行代码的一部分而不是整个do文件可能很有用,但是脱离上下文的代码并不总是有效的。例如,如果您运行一个创建变量x的命令,发现自己犯了一个错误,然后修复了它,那么您不能简单地选择创建x的命令并再次运行它,因为x已经存在。您可以删除x的现有版本,但这一步不会成为最终do文件的一部分。运行整个do文件将消除这个问题,因为它每次都从磁盘重新加载数据。如果您发现自己对这些问题感到困惑,那么运行整个do文件,而不是一个选择。
您还可以通过do命令后面跟着要运行的do文件的名称来告诉Stata运行do文件。这意味着do文件可以运行其他do文件。对于复杂的项目,有一个主do文件以适当的顺序运行所有其他do文件是非常有用的。
输出文件
因为您没有告诉Stata首先将first.log 或者 autoV2.dta放在哪里。Stata将它们保存在其工作目录中(位于Stata主窗口左下角的目录)。转到该位置并打开first.log文件,您应该会看到do文件放在Results窗口中的所有内容,但存储为永久文件。而autoV2.Dta只是auto的一个拷贝Dta文件,如果您的do文件改进了数据集,那么新版本就可以用作您的下一个do文件的输入。
do文件应该多长?
将一个长do文件拆分为两个或多个短do文件几乎没有什么坏处。我们的建议是让你的do文件足够简短,这样当你在处理其中一个文件时,你就可以轻松地理解它。您还需要保持do文件的简短,以便尽可能快地运行:处理do文件通常需要反复运行它,因此将任何您认为“完成”的代码移动到不同的do文件将节省时间。
注释
注释是do文件中包含的文本。注释可以解释do文件的功能和原因,如果其他人需要阅读和理解您的do文件,他们会非常感谢好的注释。但是,当你在写完do文件几个月或几年之后还必须弄清楚它是如何工作的时候,你是你的评论/注释最有可能的受益者。
您不需要注释每个命令——大多数Stata代码都相当容易阅读。但一定要注释任何需要特别聪明才能编写的代码,否则以后需要同样聪明才能弄清楚它的功能。
注释需要被标记成这样,这样Stata就不会试图执行它们。/ 表示Stata在看到 /之前应该忽略所有内容,而//表示Stata应该忽略该行的其余部分。下面是注释代码的一个例子:
// make a list of cars I might be interested inbuying
list make price mpg rep78 ifprice<4000 | (price<5000 & rep78>3)
/*
I 'm mostly interested in cheap cars,
but I' ll pay more fora car with a good repair record
*/
一个有用的程序员技巧是“注释掉”你不想马上运行但又不想完全删除的代码。例如,如果您临时想只关注满足价格<4000条件的汽车,您可以将该命令更改为:
list make price mpg rep78 ifprice<4000 // | (price<5000 & rep78>3)
当您准备返回到最初的命令时,只需删除注释标记。
三个斜杠(///)表示当前命令继续到下一行。这允许你将命令分解成多行以提高可读性:
list make price mpg rep78 ///
ifprice<4000 | (price<5000 & rep78>3)
从现在开始,我们将使用do文件进行所有操作。返回搜狐,查看更多