我有一个带有适当标签的变量:
Sex | Freq. Percent Cum.
------------+-----------------------------------
Male | 9,043,349 48.70 48.70
Female | 9,524,274 51.30 100.00
------------+-----------------------------------
Total | 18,567,623 100.00
我想按分类值创建一个包含摘要统计信息的表格。它在这里没有多大意义,因为只有两个值,但无论如何都要这样做。我生成
tab sex, gen(sexd_)
然后当我创建表时:
. esttab test, replace cell("mean") label
---------------------------------
(1)
mean
---------------------------------
sex==Male .9028908
sex==Female .0971092
---------------------------------
Observations 123943
---------------------------------
但是该表格显示了愚蠢的sex==
前缀,我希望此处只有Male
和Female
。这是因为tab, generate
创建了类似的变量:
(1)
mean
---------------------------------
sex==Male .9028908
sex==Female .0971092
---------------------------------
Observations 123943
---------------------------------
如何巧妙地创建我想要的标签,而无需手动浏览所有条目?
答案 0 :(得分:0)
这个问题可能有助于给出一个最小的代码示例。有关一般指导,请参阅https://stackoverflow.com/help/mcve。这是一个这样的结果显示:
. clear
. set obs 2
number of observations (_N) was 0, now 2
. gen sex = _n - 1
. label def sex 0 Male 1 Female
. label val sex sex
. tab sex
sex | Freq. Percent Cum.
------------+-----------------------------------
Male | 1 50.00 50.00
Female | 1 50.00 100.00
------------+-----------------------------------
Total | 2 100.00
. tab sex, gen(sexd)
sex | Freq. Percent Cum.
------------+-----------------------------------
Male | 1 50.00 50.00
Female | 1 50.00 100.00
------------+-----------------------------------
Total | 2 100.00
tabulate
不提供控制新指标变量的变量标签的选项(术语中的虚拟变量)。所以,这是一个如何最好地清理的问题。
第一个原则方法是循环变量并从变量标签中删除有问题的前缀文本。在这里,我们只选择==
后面的内容。另一种方法是将文本替换为包含==
的文本,并删除它。
foreach v of var sexd* {
local lbl : var label `v'
local lbl = substr(`"`lbl'"', strpos(`"`lbl'"', "==") + 2, .)
label var `v' `"`lbl'"
}
有一个便利命令可以在一个中完成。它必须作为SSC包的一部分安装。下面的第一个命令只需要在任何机器上完成一次。
ssc inst labutil
labvarch sexd*, after(==)
最糟糕的是,你有几个这样的变量需要修复。您如何有效地识别哪些变量标签包含==
?您可以编写循环来执行此操作,或使用findname
(search findname
获取最新下载位置)。
findname, varlabeltext(*==*)
findname
显示匹配的任何变量的变量名称;这些名称可以在`r(varlist)'中访问,所以(给定安装)这会削弱所有可能违规的标签:
findname, varlabeltext(*==*)
labvarch `r(varlist)', after(==)
当然,您需要注意任何误报,即变量标签中需要==
的任何变量。
您可以随时手动创建指标并直接创建自己的变量标签;或直接更改变量标签。