Stata:使用循环将标签分配给变量范围

Stata: Assign labels to range of variables with a loop

假设我有 60 个变量,none 具有相似的命名模式。我想为我在本地存储的所有变量分配标签。例如

local mylabels "dog cat bird"  

但是我正在为循环的确切表达式而苦苦挣扎。我是否必须全局存储我的变量 运行ge 然后使用 foreach?还是我使用 forvalues?

编辑: 我指的是变量标签。我设法创建了一个循环,类似于此处使用的方法 http://www.stata.com/support/faqs/programming/looping-over-parallel-lists/。但是我 运行 遇到了一个更困难的问题:我的变量没有特定的命名模式,标签有特殊字符(空格、逗号、%-符号),这就是我的循环不起作用的地方。

一些示例数据(请原谅 运行domness):

gen Apples_ts_sum = .
gen Pears_avg_1y = .
gen Bananas_max_2y = .

以及一些示例标签:

"Time series of apples, sum, %" "Average of pears, over 1 year" "Maximum of bananas, over 2 years"。

我 运行 进入 Nick Cox 的条目:http://www.stata.com/statalist/archive/2012-10/msg00285.html 并尝试应用提到的括号方法,如下所示:

 local mylabels `" "Time series of apples, sum, %" "Average of pears, over 1 year" "Maximum of bananas, over 2 years" "'

但无法让它工作。

如果你想把所有的变量都标记为相同的东西,例如"dog cat bird",那么你可以使用describe命令的varlist选项。假设您的 60 个变量通常可以用表达式 EXP 列出。那么:

    qui des EXP, varlist
    foreach variable in `r(varlist)'{
        label var `variable' "dog cat bird"
    }

已编辑: 使用您的示例数据,我创建了另一个包含变量名称的本地文件。

 local myvar `" "Apples_ts_sum" "Pears_avg_1y" "Bananas_max_2y" "'
 local mylabels `" "Time series of apples, sum, %" "Average of pears, over 1 year" "Maximum of bananas, over 2 years" "'
 forval n = 1/3{
    local a: word `n' of `mylabels'
    local b: word `n' of `myvar'
    di "variable `b', label `a'"
    label var `b' "`a'"
 }

请注意,我手动创建了变量列表。您可以使用我上面列出的方法自动创建此列表,其中 des, varlist.

qui des , varlist
foreach var in `r(varlist)'{
    local myvar_t "`myvar_t' `var'"
}

然后您可以使用本地 myvar_t 而不是上面示例中的 myvar