专栏名称: AI报道
大数据时代,做数据的玩家!
目录
相关文章推荐
CDA数据分析师  ·  【干货】金融数据分析的应用场景及3大技能要求 ·  昨天  
大数据文摘  ·  对统计学“又爱又怕”,到底如何学统计? ·  4 天前  
数据派THU  ·  【博士论文】自然语言处理中的不确定性 ·  4 天前  
数据派THU  ·  原创 | ... ·  1 周前  
CDA数据分析师  ·  【干货】电商数据分析师要具备的4点硬实力 ·  6 天前  
51好读  ›  专栏  ›  AI报道

数据类型转换之数据格式问题

AI报道  · 公众号  · 大数据  · 2017-05-09 18:33

正文

来源:爬虫俱乐部





之前介绍过字符型和数值型数据之间的转换,用到的是destringtostring两个命令。但文中没有提及数值型数据转换成字符型数据之后数据格式的问题。那么,如何对字符型数值数据加入千分位分隔符?


首先,我们对tostring进行一些补充,并介绍一些数据显示格式的内容。

生成如下数据:

clear

set more off

set obs 10

gen x = (rnormal())*1000000

tostring选择项中有format(),通过该选项我们就可以选择数值型数据转换成字符型数据之后的数据显示格式。字符型数据显示格式常用包括%#.*e、%#.*g、%#.*gc、%#.*f、%#.*fc(带上“-”表示左对齐,不带表示右对齐,#表示数据列宽度,*表示出现在小数点右侧的小数位数)。

e:科学计数法

g:一般格式

f:固定格式

c:带千分符

命令如下:

tostring x,generate(x1) force format(%12.0gc) //12表示x1的列宽度为12,0表示不取有效数字,就是说有多少位小数就保留多少位,g表示一般格式,c表示带千分位符

tostring x,generate(x2) force format(%12.1gc)  //表示从小数点后一位四舍五入

tostring x,generate(x3) force format(%12.0fc)  //f表示固定格式

tostring x,generate(x4) force format(%12.1fc)  //表示固定一位小数。没有小数位显示0,有一位小数保留,有两位小数时第二位小数四舍五入

其次,我们也可以用sdecode命令,

sdecode x,g(x1) format(%12.0fc)  //g表示generate

sdecode x,g(x2) format(%12.2fc)

如图,我们发现x2中有一些字符型数值转变为科学计数法了,这主要是因为x2变量的列宽度为12,如果我们强制显示两位小数的话,所显示的数字列宽超过了12位,这时,只要改变显示格式即可。

sdecode x,g(x3) format(%15.2fc)  //增加了一个小数点和两个0,所以列宽度为15

最后,我们也可以用string函数解决数值的千分位分隔符问题。

gen x1=string(x,"%12.0fc")

至此,我们就把字符型数据千分位分隔符的问题解决了。




限时干货下载:添加微信公众号“数据玩家「fbigdata

回复【2】免费获取「完整数据分析资料,包括SPSS\SAS\SQL\EXCEL\Project!