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

2017-05-08 河南大学 赵政轩 爬虫俱乐部 爬虫俱乐部

还记得之前文章中我们介绍过的字符型和数值型数据之间的转换吗,用到的是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")

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

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~


                       文字编辑:徐苾雯

技术总编:刘贝贝



往期推文推荐:

1.中国高校财经、管理与综合类期刊灌水排行榜

2.关于RTF你不知道的命令

3.关于RTF你不知道的命令之番外篇

4.免费事件研究,一片片从邮局寄来

5.免费的股价同步性,一片片从邮局寄来

6.Stata叫你回家听音乐了!

7.一言不合就用stata写邮件(Outlook/Foxmail)

8.听说你想知道怎么用stata画地图?

9.I have a Stata, I have a python

10.I have a Stata, I have a Python之二——pdf转word




关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号