我是Stata的新手,我认为这是一个初学者的问题。然而,我刚刚花了最后一小时在互联网上寻找无济于事的答案!
我正在使用世界银行的GDP数据(从csv
文件导入),数据采用字符串格式。当我destring
时,包含小数位的GDP数据会被忽略,而且只是一个大数字。
destring yr*, replace ignore("..")
以下是我的数据示例:
yr2016
205276172134.901
..
13397100000
当我运行我发布的命令时,它会转换为:
yr2016
2.053e+14
1.340e+10
正如您所看到的,.901
被添加到数字中而不是被视为小数空间。
我试过了:
set dp period
但它没有用。
答案 0 :(得分:1)
您只需要设置已转换变量的format
:
clear
set obs 1
generate string = "205276172134.901"
destring string, generate(numeric)
list
+------------------------------+
| string numeric |
|------------------------------|
1. | 205276172134.901 2.053e+11 |
+------------------------------+
format numeric %18.0g
list
+-------------------------------------+
| string numeric |
|-------------------------------------|
1. | 205276172134.901 205276172134.901 |
+-------------------------------------+
输入help format
了解详情。
答案 1 :(得分:0)
问题是ignore()
选项正在删除字符串变量中.
的每个实例,Stata 不 搜索a连续两个..
的序列。在这种情况下,无需使用ignore
选项。尝试destring var, replace force
并允许Stata将..
的行设置为缺失。