Stata中的encode和decode命令

Stata中的encodedecode命令可以帮助我们实现字符串变量和数值变量之间的转换。 其中encode命令可以将字符串变量的每一个类别都赋予一个数字(1,2,3...), 也就是说给每一个变量都赋予了从1开始的变量值标签。decode命令则可以将数值变量转换为字符串变量, 也就是说变量的值标签不再是从1开始的数字,而是有名称的类别。变量的值标签的名字非常重要,在转换数值变量之前,每一个数字(0,1,2...)代表的是变量的每一个类别,在转换数值变量之后,取而代之这些数字的变成了你所命名的名字,这些名字就是新的变量值标签。


encodedecode的使用方法如下:

1. 将字符串变量转变为数值变量,其中generate()用来创建新变量的名字

encode variable, generate(new variable)
label values new variable

2. 将数值变量转换为字符串变量并对每一个类别赋予新的值标签

label define label 0 "string1" 1 "string2"
label values variable label
decode variable, generate(new variable)

接下来,我会用auto.dta这个数据库作为例子来示范如何使用这两个命令:

在这个数据库中,make原本是一个字符串变量,总共有74个种类,每一个样本都有一个独特的类别。通过使用encode命令,我们可以将它转换为从1到74的数值变量,每一个数字代表之前的一个变量类别。具体的操作如下,在命令窗口输入:

encode make, generate(make2)
label values make2

这样你就创建了一个新的叫make2的变量,它是一个数值变量(从1到74):

在这个数据库中,还有一个叫foreign的变量,它是一个二元变量,有两个种类:foreigndomestic。其中0代表的值标签是Domestic,1代表的值标签是Foreign

接下来我们要将foreign这个二元数值变量转换为有两种类别的字符串变量,我为这两个类别取名domesticforeign

label define country 0 "domestic" 1 "foreign"
label values foreign country
decode foreign, generate(foreign2)

这样你就创建了一个叫foreign2的变量,其中两个类别对应的值标签是domesticforeign


encodedecode的应用非常广泛,尤其是在医学领域。想了解更多,可以看一看An Introduction to Stata for Health Researchers这本书。


如有任何问题,欢迎发送邮件至:sales@surveydesign.com.au




© 2020 by Survey Design and Analysis Services. 

  • LinkedIn
  • Facebook
  • Twitter
  • YouTube