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

标签 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

我希望在未来工作中使用的变量是var2var3country

当新变量生成时,它会自动有一个值标签。具体而言,如果我在国家/地区 列中单击美国,它会在该列顶部的单元格中显示 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

但重点是,您可能已经注意到,国家/地区 的观测值顺序是按字母顺序排列的。使得每个国家对应的var2var3值都是错误的。

这正是我无法通过的地方。由于我最终需要的列是 var2var3country,因此我希望每个国家都具有相应的 var2var3 以及自定义值标签。

我尝试了sortorder 和几个命令,但没有一个给我结果。我不知道我应该使用什么命令,或者我之前的工作有问题。

最佳答案

使用 encodelabel() 选项,是一种方法:

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

另请参阅用户编写的命令sencode(super-encode),它可以做更多的事情:ssc describe sencode

关于label - 修改值标签后如何保持观察匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32917251/

相关文章:

java - 尝试 thread.sleep 代码的一部分,但它会影响整个事情

SQLite:一个单词中的FTS匹配可以忽略哪个字符

python - 同时迭代/列表理解问题(在 UDF 中获取 Pandas 中的合并报告)

r - 在 R 中创建 "The Economist"样式图?

PROLOG CLPFD 最小化表达

python - 在绘图上标记 python 数据点

javascript - 计算文本区域中的特定字符

r - Stata 编码帮助

ios - 在 8 行后在 textview 的末尾阅读更多可点击的文本

c# - 搜索时间时正则表达式性能不佳 (xx :xx:xx)