我想用变量area
的前三位数字创建一个新变量
(即区号)和变量state
中的状态作为值标签。
* Example generated by -dataex-. To install: ssc install dataex
clear
input float area str2 state
25101 "AL"
25601 "AL"
26255 "WI"
41455 "WI"
53455 "WI"
60855 "WI"
71555 "WI"
92055 "WI"
40144 "RI"
20816 "ID"
98616 "ID"
end
我使用了以下命令:
encode state, gen(area_code)
但是,这会创建一个列,其中包含值1
,2
,3
,4
等。
如何在不进行更改的情况下将其替换为原始区号 个人价值观?
答案 0 :(得分:3)
最简单的方法是使用社区贡献的命令labmask
:
generate area_code = floor(area / 100)
labmask area_code, values(state)
带有值标签的结果:
list, sepby(state) abbreviate(15)
+---------------------------+
| area state area_code |
|---------------------------|
1. | 25101 AL AL |
2. | 25601 AL AL |
|---------------------------|
3. | 26255 WI WI |
4. | 41455 WI WI |
5. | 53455 WI WI |
6. | 60855 WI WI |
7. | 71555 WI WI |
8. | 92055 WI WI |
|---------------------------|
9. | 40144 RI RI |
|---------------------------|
10. | 20816 ID ID |
11. | 98616 ID ID |
+---------------------------+
没有值标签的结果:
list, sepby(state) abbreviate(15) nolabel
+---------------------------+
| area state area_code |
|---------------------------|
1. | 25101 AL 251 |
2. | 25601 AL 256 |
|---------------------------|
3. | 26255 WI 262 |
4. | 41455 WI 414 |
5. | 53455 WI 534 |
6. | 60855 WI 608 |
7. | 71555 WI 715 |
8. | 92055 WI 920 |
|---------------------------|
9. | 40144 RI 401 |
|---------------------------|
10. | 20816 ID 208 |
11. | 98616 ID 986 |
+---------------------------+
要安装labmask
,请输入:
net install gr0034.pkg