date()转换时间不对_聊一聊Stata中时间变量的处理

对于初次接触统计软件的朋友来说,对于时间变量的处理,往往会有些不知所措。原因在于,统计软件,对时间变量的处理,与EXCEL并不一致,因此用惯了EXCEL的朋友,需要专门适应一下统计软件的处理方法。下面我们以Stata为例简析一下。 

d4529d5d5e4878309eab884f31e97007.png

比如说,我们现在拿到了一个CPI同比的月度数据,如上图EXCEL表所示。用EXCEL可以很方便的做图等,但是我们现在把数据导入Stata之后,会发现时间列是红色,也就是说,在Stata看来,这列数据是文本格式,那么对时间作图等等,都是失败的。Stata会报错如下。

line cpi time

string variables not allowed in varlist;

time is a string variable

7a9fc19f673264a559112c6fd1ba964e.png

因此我们如果要在Stata中处理时间变量,第一件事就是要把文本格式的时间,转换成Stata可以识别的格式。转换的命令叫做date,其格式是:

date(s1,s2),其中s1是文本格式的时间变量,s2是文本格式时间的年月日的排列次序

比如说,例子中的1987-01,就是YM,如果是1987-01-01,那就是YMD。如果把1987-01-01缩写成87-01-01,那就用19YMD,在年份前面加上19。

现在我们运行命令:

gen timen = date(time, “YM”)

a68156b85706323c580422bcaf29d4f6.png

可以看到,新生成的时间变量timen,是一串整数,这是什么意思呢?第一,date这个命令识别的文本格式,是日度格式,如果原始数据是月份,比如1987-01,那么Stata会自动补充上日,默认为每个月的1号,即1987-01-01;第二,1987-01-01对应的9862,是指距离1960年1月1日的天数。

显然,这么一串数字,是不符合我们的阅读习惯的,我们需要把数字转换成我们易读的格式,那就要用的format命令,其格式是:

format timen %td

3a1bf7d3d603aa09f072214e744e70c4.png

那么我们就看到,数字格式的时间,就转化成我们易读的格式,此时再作图,就没问题了。

运行:line cpi timen

如果我们并不需要日度时间,我们需要把日度时间,转换成月度时间,怎么操作呢?

如果直接使用format timen %tm,会有什么结果呢?我们来看看,显然是行不通的。2781m11,是把9862,转换成了距离1960年1月有9862个月的月份,那就成了2781年1月,显然不对。

ed0cb6aa3a4903a48fea8c872a44f345.png

此时我们需要日度时间,转换成月度时间,使用的命令是mofd,格式如下:

gen ti = mofd(timen)

a5f5cce42cdbe5aae63459057e9a4368.png

此时,324的意思,是1987-01-01所在的月份,距离1960年1月的月数,我们再转换成易读的月份格式。

format ti %tm

f1f479cde940011ccedea962306f3f04.png

我们再做个图看看,从下图可以看到,日期格式已经变成了月度。

5a120f1806be775bcf4f614fafedd93f.png

我们最后总结一下,Stata中时间变量的处理。我们将EXCEL中的日期导入Stata之后,在Stata眼中,这是一个字符串,不会被识别。因此,第一步,我们要用date命令,将字符串形式的日期(日度数据),转换成Stata可以识别的日期,这是一串数字,是距离1960年1月1日的天数;第二步,这串数字,我们是不容易理解的,所以要用format命令,把这串数字转换成我们能看懂的日期;第三步,如果我们需要是月度、季度等日期,就用mofd、qofd命令,把距离1960年1月1日的天数,转换成距离1960年1月的月数或者季度数,再用format命令。

以上就是Stata中时间变量的处理的简单分析。

  • 13
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值