2011-03-13 132 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

非常好,谢谢! –