我正在用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 以及自定义值标签。
我尝试了排序,订单和几个命令,但没有人给我结果。我不知道我应该使用什么命令,或者我早期的工作中有什么问题。
答案 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
。