提取分类变量的值标签

Extracting the value labels of a categorical variable

我有一个分类变量,由 12 个级别组成,数值从 112

这些数值中的每一个都被分配了一个标签。例如,1 = heart2 = brain3 = liver等。我想要做的是提取标签(心脏、大脑、肝脏)并将其放入本地宏中。这可能吗?

我尝试了很多不同的命令,例如 describecodebook

我也试过以下方法:

levelsof var, local(diseases)

以上代码获取分类变量 var 的水平并将它们存储在本地宏 diseases 中。然而,这只输出数值,即 1,2,3,4,而不是标签。

下面是依赖宏扩展函数的灵活解决方案:

sysuse auto, clear

levelsof foreign, local(levels)
local lab : value label foreign

foreach l of local levels {
    local all `all' `: label `lab' `l''
}

display "`all'"
Domestic Foreign

如果您还想保留数值,请按如下方式更改循环:

foreach l of local levels {
    local all `all' `l' `: label `lab' `l''
}

display "`all'"
0 Domestic 1 Foreign

decode 命令对这个问题也有帮助:

decode var, generate(labvar)
levelsof labvar, local(diseases) clean