Я не знаю, как это сделать напрямую. Кроме того, как следует из комментария Роберто, есть причины, по которым просто выдача команды generate
не будет перезаписывать (см.: replace
) содержимое переменной.
Для обеспечения целостности данных вам нужно будет выпустить две отдельные команды по мере того, как будет задан ваш вопрос (явно отбрасывая существующую переменную до генерации новой). Я вижу это как метод, в котором силы Stata пользователь должен четко понимать свои намерения.
Следует отметить, что Stata не одинок в этом отношении. Например, SQL Server требует, чтобы пользователь удалял существующую таблицу перед созданием таблицы с тем же именем (в той же базе данных), не допускает множественные столбцы с тем же именем в таблице и т. Д., И все это по уважительной причине.
Однако, если вы действительно настроены на то, что можете сделать однострочный в Stata, чтобы делать то, что вы хотите, вы могли бы написать очень простую программу. Ниже следует, чтобы вы начали:
program mkvar
version 13
syntax anything=exp [if] [in]
capture confirm variable `anything'
if !_rc {
drop `anything'
}
generate `anything' `exp' `if' `in'
end
Вы тогда, естественно, сохранить программу mkvar.ado в директории, Stata бы найти (то есть C:. \ Лишних слов \ персональный \ на Windows Если вы не уверены, тип sysdir
), и вызвать его с помощью:
mkvar newvar=expression [if] [in]
Теперь, я не проверял выше код так, вы, возможно, придется сделать немного де-подслушивание, но он работал отлично в примерах I» попробовал.
В заключительной записке я бы посоветовал вам проявлять осторожность при этом - конечно, вы захотите быть бдительными в отношении изменения ваших данных, сохраните копию своих необработанных данных, в то время как файл do будет обрабатывать данные в память и т. д.
С моей точки зрения, Stata защищает целостность ваших данных. Дополнительная проверка - небольшая цена для оплаты. –
Это не проблема для меня и, возможно, для других, потому что я пишу свой код в do-файлах, которые я запускаю сверху, начиная с очистки и перезагрузки данных. Я вижу проблему при отладке, выбирая группу строк и запуская, редактируя и повторяя, пока они не верны, а затем перейдем к следующей группе строк. Но поскольку группа строк запускается из временного файла do-file, локальные макросы не сохраняются в конце теста для использования следующей группой отправленных строк. Это означает, что мне редко бывает полезно отправлять код по частям. –
Да, я согласен с тем, что Stata предназначен для запуска целого файла do-file, а не для файлов do-файлов, а локальный макрос - хороший пример, а также команда «set off off». Наверное, я должен просто приспособить свое поведение. Проблема в том, что некоторая команда занимает очень много времени для выполнения, поэтому отладка кода после таких команд не удобна. – Victor