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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在修改值标签后保持观察匹配?相关的知识,希望对你有一定的参考价值。

我正在用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。

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

但重点是,正如您可能已经注意到的那样,国家观察的顺序按字母顺序排列。它使每个国家的var2和var3的相应值成为错误。

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

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

答案

使用label()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

另请参阅用户编写的命令sencode(super-encode),它可以执行更多操作:ssc describe sencode

以上是关于如何在修改值标签后保持观察匹配?的主要内容,如果未能解决你的问题,请参考以下文章

如何在UITableViewCell - Swift 3中删除标签后仍然保持约束

如何在文本区域标签中的特定光标位置插入选择标签下拉值作为文本片段?

Knockoutjs:如何使添加到列表中的输入值也可观察

添加到后台堆栈时如何保持片段状态?

植物大战僵尸阳光值修改以及阳光基地址寻找详细步骤~包含排除不符合条件的地址的讲解,以及如何观察地址情况等

Oracle 数据库 - 使用UEStudio修改dmp文件版本号,解决imp命令恢复的数据库与dmp本地文件版本号不匹配导致的导入失败问题,“ORACLE error 12547”问题处理(代码片段