将状态标签映射到区号

时间:2019-05-30 17:47:50

标签: stata

我想用变量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)

但是,这会创建一个列,其中包含值1234等。

如何在不进行更改的情况下将其替换为原始区号 个人价值观?

1 个答案:

答案 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