2

我正在Stata中编写一些代码,并且我已经使用preserve过一次。但是,现在我想preserve再次,而不使用restore.

我知道这会给出一条错误消息,但它会保存到新的保护区吗?

4

1 回答 1

5

不,保留两次而不恢复中间只会引发错误:

sysuse auto, clear

preserve
drop mpg

preserve
already preserved
r(621);

但是,您可以使用临时文件执行类似的操作。来自help macro

“... tempfile为指定的本地宏名称指定名称,这些名称可用作临时文件的名称。当程序或 do-file 结束时,使用这些指定名称创建的任何数据集都将被删除...”

考虑以下玩具示例:

tempfile one two three

sysuse auto, clear
save `one'

drop mpg
save `two'

drop price
save `three'

use `two'
list price in 1/5

     +-------+
     | price |
     |-------|
  1. | 4,099 |
  2. | 4,749 |
  3. | 3,799 |
  4. | 4,816 |
  5. | 7,827 |
     +-------+

use `one'
list mpg in 1/5

     +-----+
     | mpg |
     |-----|
  1. |  22 |
  2. |  17 |
  3. |  22 |
  4. |  20 |
  5. |  15 |
     +-----+
于 2018-05-31T23:40:45.103 回答