For 循环错误(语法无效)

For loop error (invalid syntax)

我刚刚学会了如何在 Stata 中使用 for 循环。

我在我的数据上尝试了这个,以便将我的字符串格式变量转换为数字变量,然后将新的数字变量移动到旧字符串格式变量的旁边。

但 Stata 不知何故给了我一条错误信息:

foreach var of varlist city zipcode {
encode 'var', gen(_'var')
order _'var', after('var')
}

' invalid name
r(198);

我还尝试了以下方法:

foreach varlist in city zipcode {
encode 'varlist', gen(_'varlist')
order _'varlist', after('varlist')
}

invalid syntax 
r(198);

我想这些简单的代码片段应该可以工作,但我不知道为什么会失败。

有人可以帮我吗?

您正在使用 'var' 而不是 `var' 来引用本地宏:

clear
set obs 5

generate city = string(runiform())
generate zipcode = string(runiform())

foreach var of varlist city zipcode {
    encode `var', gen(_`var')
    order _`var', after(`var')
}

list

     +-------------------------------------------+
     |     city      _city    zipcode   _zipcode |
     |-------------------------------------------|
  1. | .2047095   .2047095   .3913819   .3913819 |
  2. | .8927587   .8927587   .1196613   .1196613 |
  3. | .5844658   .5844658   .7542434   .7542434 |
  4. | .3697791   .3697791   .6950233   .6950233 |
  5. | .8506309   .8506309   .6866152   .6866152 |
     +-------------------------------------------+