Сохранение данных более одного раза - PullRequest
0 голосов
/ 01 июня 2018

Я пишу некоторый код в Stata, и я уже использовал preserve один раз.Тем не менее, теперь я хотел бы снова preserve, не используя restore.

Я знаю, что это выдаст сообщение об ошибке, но сохранится ли оно в новой области сохранения?

1 Ответ

0 голосов
/ 01 июня 2018

Нет, сохранение дважды без восстановления промежуточного значения просто приводит к ошибке:

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 |
     +-----+
...