麻烦" destring"并保持小数

时间:2018-05-27 17:47:08

标签: decimal stata

我是Stata的新手,我认为这是一个初学者的问题。然而,我刚刚花了最后一小时在互联网上寻找无济于事的答案!

我正在使用世界银行的GDP数据(从csv文件导入),数据采用字符串格式。当我destring时,包含小数位的GDP数据会被忽略,而且只是一个大数字。

 destring yr*, replace ignore("..")

以下是我的数据示例:

yr2016
205276172134.901
..
13397100000

当我运行我发布的命令时,它会转换为:

yr2016
2.053e+14

1.340e+10

正如您所看到的,.901被添加到数字中而不是被视为小数空间。

我试过了:

set dp period

但它没有用。

2 个答案:

答案 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将..的行设置为缺失。