如何在修改值标签后保持观察匹配?

时间:2015-10-02 23:27:32

标签: label match stata lookup-tables

我正在用Stata做一些基本的数据处理工作。但是,在修改变量的值标签后,我仍然坚持如何保持其他变量的观察结果匹配。

例如,比方说,我有如下原始数据集:

   var1   var2   var3
    US    1000    15
  China    500    20
    UK     800    10

var1 是一个字符串变量。我需要将其转换为数字形式。所以我输入了

   encode var1, gen(country)    // where the new variable country is numeric

我希望将来工作的变量是 var2 var3 country

生成新变量时,它会自动具有值标签。具体来说,如果我在 country 的列中单击US,它会在列顶部的单元格中显示3。

   var1   var2   var3  country
    US    1000    15     US
  China    500    20   China
    UK     800    10     UK

到目前为止,这很好。我的意思是观察到的每一行都匹配。

但是,这个自动生成的值标签并不是我想要的。我需要的是1表示英国,2表示美国,3表示中国。所以我修改了它:

     label define country 1 "UK" 2 "US" 3 "China", modify

如下所示,我得到了我想要的价值标签。就像,点击中国给我3.

     var1   var2   var3  country
      US    1000    15    China
    China    500    20     UK
      UK     800    10     US

但重点是,正如您可能已经注意到的, country 的观察顺序按字母顺序排列。它使每个国家/地区的 var2 var3 的相应值出错。

这正是我无法通过的地方。由于我最终需要的列是 var2 var3 country ,我希望每个国家/地区都有相应的 var2 , var3 以及自定义值标签。

我尝试了排序订单和几个命令,但没有人给我结果。我不知道我应该使用什么命令,或者我早期的工作中有什么问题。

1 个答案:

答案 0 :(得分:3)

使用label()的{​​{1}}选项,是一种方式:

encode

另请参阅用户编写的命令clear set more off input /// str10 var1 var2 var3 US 1000 15 China 500 20 UK 800 10 end label define lblcountry 1 "UK" 2 "US" 3 "China" encode var1, generate(country) label(lblcountry) list list, nolabel super -encode),它可以执行更多操作:sencode