Скопируйте категориальную переменную с ее метками значений

Можно ли скопировать помеченную категориальную переменную в одну строку или мне обычно нужно копировать метки как отдельный шаг?

В случае, который я рассматриваю, egen ... group() подходит близко, но изменяет базовые целые числа:

sysuse auto

** starts them from different indices
egen mycut = cut(mpg), at(0 20 30 50) label icodes
egen mycut_copy = group(mycut), label

** does weird stuff
egen mycut2 = cut(mpg), at(0 20 30 50) label icodes
replace mycut2 = group(mycut2)
egen mycut_copy2 = group(mycut2), label

** the correct approach?
gen mycut3 = cut(mpg), at(0 20 30 50) label icodes
gen mycut_copy3 = mycut3
label values mycut_copy3 mycut3

person Frank    schedule 23.09.2014    source источник


Ответы (1)


Вы можете очень легко делать то, что хотите, используя менее известную команду clonevar:

sysuse auto, clear

egen mycut = cut(mpg), at(0 20 30 50) label icodes
clonevar mycut2 = mycut

list mycut* in 1/10, separator(0)

     +----------------+
     | mycut   mycut2 |
     |----------------|
  1. |   20-      20- |
  2. |    0-       0- |
  3. |   20-      20- |
  4. |   20-      20- |
  5. |    0-       0- |
  6. |    0-       0- |
  7. |   20-      20- |
  8. |   20-      20- |
  9. |    0-       0- |
 10. |    0-       0- |
     +----------------+

Обратите внимание, что group() относится к разным функциям при использовании с generate и egen, поэтому вы не получите одинаковых результатов.

person Community    schedule 09.12.2018