Извлечение меток значений категориальной переменной - PullRequest
1 голос
/ 04 июля 2019

У меня есть категориальная переменная, состоящая из 12 уровней с числовыми значениями от 1 до 12.

Каждому из этих числовых значений присваивается метка. Например, 1 = heart, 2 = brain, 3 = liver и так далее. То, что я хотел бы сделать, это извлечь метку (сердце, мозг, печень) и поместить ее в локальный макрос. Возможно ли это?

Я пробовал много разных команд, таких как describe и codebook.

Я также попробовал следующее:

levelsof var, local(diseases)

Приведенный выше код получает уровни категориальной переменной var и сохраняет их в локальном макросе diseases. Однако при этом выводятся только числовые значения, то есть 1,2,3,4, а не метки.

Ответы [ 2 ]

4 голосов
/ 04 июля 2019

Ниже представлено гибкое решение, основанное на расширенных функциях макросов:

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
3 голосов
/ 04 июля 2019

Команда decode также полезна для этой проблемы:

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