簡體   English   中英

Stata:使用循環將標簽分配給變量范圍

[英]Stata: Assign labels to range of variables with a loop

假設我有60個變量,沒有一個具有相似的命名模式。 我想為所有存儲在本地的變量分配標簽。 所以舉個例子

local mylabels "dog cat bird"  

但是,我正在為循環的確切表達而苦苦掙扎。 我是否必須全局存儲變量范圍,然后使用foreach? 還是我使用賦值?

編輯:我指的是變量標簽。 我設法創建了一個循環,類似於此處使用的方法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" "'

但是無法使其正常工作。

如果要將所有變量標記為同一對象,例如"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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM