变量由字符型转化为数值型后,如何使开头的零依旧显示(如001)?

如何使得数值型显示的和字符型一样呢?先上例子

clear
input str3 id
"001"
"002"
"003"
"004"
"005"
"006"
"007"
"008"
"009"
"010"
end

可以看出,id变量是字符型,如果我们将其转为数值型,一般的命令如下:

destring id, gen(numid)

查看一下

. list id numid

     +-------------+
     |  id   numid |
     |-------------|
  1. | 001       1 |
  2. | 002       2 |
  3. | 003       3 |
  4. | 004       4 |
  5. | 005       5 |
     |-------------|
  6. | 006       6 |
  7. | 007       7 |
  8. | 008       8 |
  9. | 009       9 |
 10. | 010      10 |
     +-------------+

可以看出数值型变量前面的0不显示了。如何使得数值型(numid)显示的和字符型(id)一样呢?

其实这就是个显示问题,使用格式命令:

. format numid %03.0f

再查看一下:

. list id numid

     +-------------+
     |  id   numid |
     |-------------|
  1. | 001     001 |
  2. | 002     002 |
  3. | 003     003 |
  4. | 004     004 |
  5. | 005     005 |
     |-------------|
  6. | 006     006 |
  7. | 007     007 |
  8. | 008     008 |
  9. | 009     009 |
 10. | 010     010 |
     +-------------+

还有一种方法,用标签显示(将字符型变量的值作为标签附到数值型变量上):

egen numid2 = group(id), label

查看一下这三个变量:

list id numid numid2

    +----------------------+
    |  id   numid   numid2 |
    |----------------------|
 1. | 001     001      001 |
 2. | 002     002      002 |
 3. | 003     003      003 |
 4. | 004     004      004 |
 5. | 005     005      005 |
    |----------------------|
 6. | 006     006      006 |
 7. | 007     007      007 |
 8. | 008     008      008 |
 9. | 009     009      009 |
10. | 010     010      010 |
    +----------------------+

一种修改显示格式,另一种是显示标签,问题解决。