5

一些数据集带有全小写的值标签,我最终得到显示“埃及”、“约旦”和“沙特阿拉伯”结果的图表和表格,而不是大写的国家名称。

我想proper()字符串函数可以为我做点什么,但我没有找到为 Stata 11 编写代码的正确方法,它将大写给定变量的所有值标签。

我基本上需要proper()在变量上的所有值标签上运行该函数,然后将它们分配给变量。foreach在Stata中使用循环和宏有可能吗?

4

1 回答 1

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
于 2011-03-13T18:55:16.907 回答