[英]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.