阅读:0
听报道
对于初次接触统计软件的朋友来说,对于时间变量的处理,往往会有些不知所措。原因在于,统计软件,对时间变量的处理,与EXCEL并不一致,因此用惯了EXCEL的朋友,需要专门适应一下统计软件的处理方法。下面我们以Stata为例简析一下。
比如说,我们现在拿到了一个CPI同比的月度数据,如上图EXCEL表所示。用EXCEL可以很方便的做图等,但是我们现在把数据导入Stata之后,会发现时间列是红色,也就是说,在Stata看来,这列数据是文本格式,那么对时间作图等等,都是失败的。Stata会报错如下。
因此我们如果要在Stata中处理时间变量,第一件事就是要把文本格式的时间,转换成Stata可以识别的格式。转换的命令叫做date,其格式是:
date(s1,s2),其中s1是文本格式的时间变量,s2是文本格式时间的年月日的排列次序
比如说,例子中的1987-01,就是YM,如果是1987-01-01,那就是YMD。如果把1987-01-01缩写成87-01-01,那就用19YMD,在年份前面加上19。
可以看到,新生成的时间变量timen,是一串整数,这是什么意思呢?第一,date这个命令识别的文本格式,是日度格式,如果原始数据是月份,比如1987-01,那么Stata会自动补充上日,默认为每个月的1号,即1987-01-01;第二,1987-01-01对应的9862,是指距离1960年1月1日的天数。
显然,这么一串数字,是不符合我们的阅读习惯的,我们需要把数字转换成我们易读的格式,那就要用的format命令,其格式是:
那么我们就看到,数字格式的时间,就转化成我们易读的格式,此时再作图,就没问题了。
运行:line cpi timen
如果我们并不需要日度时间,我们需要把日度时间,转换成月度时间,怎么操作呢?
如果直接使用format timen %tm,会有什么结果呢?我们来看看,显然是行不通的。2781m11,是把9862,转换成了距离1960年1月有9862个月的月份,那就成了2781年1月,显然不对。
此时我们需要日度时间,转换成月度时间,使用的命令是mofd,格式如下:
此时,324的意思,是1987-01-01所在的月份,距离1960年1月的月数,我们再转换成易读的月份格式。
我们再做个图看看,从下图可以看到,日期格式已经变成了月度。
我们最后总结一下,Stata中时间变量的处理。我们将EXCEL中的日期导入Stata之后,在Stata眼中,这是一个字符串,不会被识别。因此,第一步,我们要用date命令,将字符串形式的日期(日度数据),转换成Stata可以识别的日期,这是一串数字,是距离1960年1月1日的天数;第二步,这串数字,我们是不容易理解的,所以要用format命令,把这串数字转换成我们能看懂的日期;第三步,如果我们需要是月度、季度等日期,就用mofd、qofd命令,把距离1960年1月1日的天数,转换成距离1960年1月的月数或者季度数,再用format命令。
以上就是Stata中时间变量的处理的简单分析。
话题:
0
推荐
财新博客版权声明:财新博客所发布文章及图片之版权属博主本人及/或相关权利人所有,未经博主及/或相关权利人单独授权,任何网站、平面媒体不得予以转载。财新网对相关媒体的网站信息内容转载授权并不包括财新博客的文章及图片。博客文章均为作者个人观点,不代表财新网的立场和观点。