修改值标签后如何保持观察匹配?
How to keep observations match after value label modified?
我正在用 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
但关键是,您可能已经注意到,国家/地区 的观察顺序是按字母顺序排列的。使得每个国家对应的 var2 和 var3 的值是错误的。
这正是我无法通过的地方。由于我最终需要的列是 var2、var3 和 country,我想要每个国家及其相应的值 var2、var3 以及自定义值标签。
我尝试了 sort、order 和几个命令,但 none 给了我结果。我不知道我应该使用什么命令,或者我之前的工作有问题。
使用 encode
的 label()
选项是一种方法:
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
.
我正在用 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
但关键是,您可能已经注意到,国家/地区 的观察顺序是按字母顺序排列的。使得每个国家对应的 var2 和 var3 的值是错误的。
这正是我无法通过的地方。由于我最终需要的列是 var2、var3 和 country,我想要每个国家及其相应的值 var2、var3 以及自定义值标签。
我尝试了 sort、order 和几个命令,但 none 给了我结果。我不知道我应该使用什么命令,或者我之前的工作有问题。
使用 encode
的 label()
选项是一种方法:
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
.