在 Stata 中是否有等同于 python enumerate 的东西?

Is there an equivalent of python enumerate in Stata?

在python中,可以遍历值列表并使用枚举访问它们各自的索引。例如:

values=['var2006','var2007','var2008','var2009','var2010','var2011']


for index, value in enumerate(values, start=1):
    print(value.replace(value[-4:],str(index)))

哪个returns:

var1
var2
var3
var4
var5
var6

我想在 Stata 中做类似的事情。具体来说,我有一个像 'var2006','var2007','var2008','var2009','var2010','var2011' 这样的变量列表,我想将它们重命名为 'var1','var2','var3','var4','var5','var6'。我正在尝试使用 foreachrename 的组合,但如果有类似于 python enumerate 的东西,它将为我解决这个问题。

您可以使用带有重新编号和排序选项的重命名命令来完成此操作:

rename var# var#, renumber sort

或者,如果您想单独引用每个变量,您也可以使用 forvalues 循环和局部宏。这将更类似于 Python 的枚举,因为您可以一次引用一个变量:

clear
set obs 100

gen var2006 = 1
gen var2007 = 2
gen var2008 = 3
gen var2009 = 4
gen var2010 = 5
gen var2011 = 6

forvalues i = 2006/2011 {
    local j = `i' - 2005
    rename var`i' var`j'
}

注意局部宏 j 等于年份减去 2005,您可以将其设置为任何数字以更改变量的名称。