Stata:使用循环为变量范围指定标签

时间:2015-10-22 08:48:10

标签: loops stata labels

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

local mylabels "dog cat bird"  

然而,我正在努力解决循环的确切表达。我是否必须全局存储我的变量范围然后使用foreach?或者我使用forvalues?

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

一些示例数据(借口随机性):

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

以及一些示例标签:

“苹果的时间序列,总和,%”“梨的平均值,超过1年” “香蕉最多,超过2年”。

我遇到了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" "'

但无法让它发挥作用。

1 个答案:

答案 0 :(得分:1)

如果要将所有变量标记为相同的内容,例如"dog cat bird",则可以使用varlist命令的describe选项。假设您的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