2011-03-13 134 views
5

某些數據集帶有全小寫值標籤,最後以圖表和表格顯示「埃及」,「約旦」和「沙特阿拉伯」的結果,而不是大寫的國家名稱。在Stata中大寫價值標籤

我想proper()字符串函數可以爲我做些事情,但我沒有找到正確的方式來編寫Stata 11的代碼,它將大寫給定變量的所有值標籤。

我基本上需要在變量上的所有值標籤上運行proper()函數,然後將它們分配給變量。有可能在Stata中使用foreach循環和宏?

回答

6

是的。首先,讓我們創建一個標籤的一些樣本數據來進行測試:

clear 
drawnorm x, n(10) 
gen byte v = int(4+x) 
drop x 
label define types 0 "zero" 1 "one" 2 "two" 3 "three" 4 "four" 5 "five" 6 "six" 
label list types 
label values v types 

下面是利用與變量「v」相關聯的值的宏:

local varname v 
local sLabelName: value label `varname' 
di "`sLabelName'" 

levelsof `varname', local(xValues) 
foreach x of local xValues { 
    local sLabel: label (`varname') `x', strict 
    local sLabelNew =proper("`sLabel'") 
    noi di "`x': `sLabel' ==> `sLabelNew'" 
    label define `sLabelName' `x' "`sLabelNew'", modify 
} 

它運行後,檢查結果:

label list types 
+0

非常好,謝謝! –