提取分类变量的值标签
Extracting the value labels of a categorical variable
我有一个分类变量,由 12
个级别组成,数值从 1
到 12
。
这些数值中的每一个都被分配了一个标签。例如,1 = heart
、2 = brain
、3 = liver
等。我想要做的是提取标签(心脏、大脑、肝脏)并将其放入本地宏中。这可能吗?
我尝试了很多不同的命令,例如 describe
和 codebook
。
我也试过以下方法:
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
我有一个分类变量,由 12
个级别组成,数值从 1
到 12
。
这些数值中的每一个都被分配了一个标签。例如,1 = heart
、2 = brain
、3 = liver
等。我想要做的是提取标签(心脏、大脑、肝脏)并将其放入本地宏中。这可能吗?
我尝试了很多不同的命令,例如 describe
和 codebook
。
我也试过以下方法:
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