复制带有其值标签的分类变量

Fra*_*ank 2 copy stata categorical-data

是否可以在一行中复制带标签的类别变量,还是通常需要在标签上复制作为单独的步骤?

在我正在研究的情况下,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
Run Code Online (Sandbox Code Playgroud)

Pea*_*cer 5

您可以使用鲜为人知的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- |
     +----------------+
Run Code Online (Sandbox Code Playgroud)

请注意,group()当与generate和一起使用时egen,它指的是不同的函数,这就是为什么您无法获得相同结果的原因。