Не используйте while
.Вместо этого используйте forvalues
:
forvalues i = 2/9 {
generate diff0`i' = f1ysveny0`i' - sveny0`=`i'-1'
}
Ваша ошибка заключается в том, что
`i-1'
эквивалентно
`=`i'-1'
, но это не так.В вашем коде Stata просто видит в качестве макроса ссылку i-1
, но знаки минус не могут быть частью имен Stata.Конечно, целое не является выражением, так как вам нужен второй синтаксис: во-первых, для ссылки на локальный макрос i
;затем вычесть 1;и наконец, чтобы Stata использовал результат выражения.
Ошибка вашего кода сама по себе не была фатальной, поскольку ссылки на макросы, которые не имеют смысла, оцениваются как пустые строки.Но (я полагаю) вы в итоге ссылались на имя переменной, отсутствующее в вашем наборе данных, так как sveny0
не упоминается в вашем коде.
Начинающим часто бывает проще:
forvalues i = 2/9 {
local j = `i' - 1
generate diff0`i' = f1ysveny0`i' - sveny0`j'
}