查看原文
其他

时间函数——从毫秒计算其他单位的时间(1)

河南大学 赵政轩 Stata and Python数据分析 2022-03-15

提示

有问题,不要怕!点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

1

Stata给出了许多时间函数,大家可以通过help datetime function进行查看。在时间单位转化的过程中闰秒的问题我们需要注意一下。

闰秒,是指为保持协调世界时接近于世界时时刻,由国际计量局统一规定在年底或年中(也可能在季末)对协调世界时增加或减少1秒的调整。由于地球自转的不均匀性和长期变慢性(主要由潮汐摩擦引起的),会使世界时(民用时)和原子时之间相差超过到±0.9秒时,就把协调世界时向前拨1秒(负闰秒,最后一分钟为59秒)或向后拨1秒(正闰秒,最后一分钟为61秒)。

在Stata基于毫秒计算的时间函数中分为两类,一类是考虑闰秒的存在,另一类是不考虑。比如Clock()在计算毫秒的时候会考虑从01jan1960 00:00:00.000到规定时间的毫秒数时会考虑到闰秒的存在,Stata的help文件是这么说的,with leap seconds since 01jan1960 00:00:00.000。而clock()就不需要考虑闰秒的存在。

回归正题,我们该如何从毫秒计算其他单位的时间呢?以下计算我们均不考虑闰秒的存在。

从毫秒转化成秒、分钟、小时对应的时间函数是seconds(ms)minutes(ms)hours(ms)。他们的反函数是msofsonds(s)msofminutes(m)msofhours(h)

dis seconds(1000) //1千毫秒为1秒

dis minutes(60000) //6万毫秒为1分钟

dis hours(1000*60*60) //360万毫秒为1小时

dis msofseconds(1)

dis msofminutes(1)

dis msofhours(1)

2

从毫秒转化成其他时间单位的中间桥梁是天数,然后我们再从天数计算得到年、半年、季度、月、周。

从毫秒到年份,有两种做法:

1)通过dofc(e_tc)yofd(e_d)函数结合起来。dofc(e_tc)通过自01jan1960 00:00:00.000以来的非闰秒毫秒数计算天数,e_tc表示毫秒数据。yofd(e_d)通过天数数据计算年份数据,e_d表示天数数据。大家其实可以看看函数的名字d of c、y of d,其实dofc表示c的d,同理yofd表示d的y,这里的c表示毫秒,d表示天数,y表示年数。所以

gen year1 = yofd(dofc(time2))

2)通过year(e_d)dofc(e_tc)时间函数计算年份。

gen year2 = year(dofc(time2))

3

从毫秒到半年,也有两种方法

1)通过dofc(e_tc)hofd(e_d)的结合,h表示halfyear,其他的大家看过上面的应该都明白了吧。

gen halfyear1 =hofd(dofc(time2))

此时显示的数据是现在时间到01jan1960 00:00:00.000的半年数,我们可以通过format命令改一下数据的时间显示格式。

format %thCCYY!hh halfyear1

这里小编为大家说明一下,%thCCYY!hh是时间数据显示格式的一种,我们看看help文件是怎么解读这个东西的。help文件以%tcDDmonCCYY_HH:MM:SS为例子。%是所有数据格式的起始符号(%##s、%##.#g等),t代表的时间格式,c表示Stata默认变量中的代码为毫秒(c-毫秒、C-毫秒(含闰秒)、d-天、w-周、m-月、q-季度和y-年),接下来的DDmonCCYY_HH:MM:SS表示时间数据(这里是毫秒)显示的样式,不同符号对应的含义大家可以参考下面的两幅图片。

2)通过halfyear(e_d)dofc(e_tc)的结合。

gen halfyear2 = halfyear(dofc(time2))

嗯?这是怎么回事?看来笔者糊涂了。halfyear(e_d)其实只能算出来目前时间数据在现在年份所处的位置。不过这也是有点用的,当大家想按照上下半年进行数据分类的时候,通过这个函数生成的变量进行分类会方便点(tab halfyear,gen(hy))

不知不觉篇幅已经超了,不是说好的还有季度和月份吗?小编在这里说声抱歉啦,篇幅原因,还是把它俩留在接下来的推文吧!

没看懂记得戳下方视频学习哦!

https://v.qq.com/txp/iframe/player.html?vid=k05000uafq3&width=500&height=375&auto=0
    
注:此推文中的图片及封面(除操作部分的)均来源于网络!如有雷同纯属巧合!

    以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

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

                        文字编辑:王    悦

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

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

3.命令sum2docx输出统计量表到docx文件

4.用reg2docx报告你的实证结果吧!

5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件

6.putdocx+wordconvert—将实证结果输出到Word(.docx)文档

7.Stata 15之Markdown——没有做不到,只有想不到!

8.矩阵和宏的故事

9.shellout,open anything

10.Putpdf--神奇的转换工具



关于我们

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

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

投稿邮箱:statatraining@163.com

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

欢迎关注爬虫俱乐部

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存