对于初次接触统计软件的朋友来说,对于时间变量的处理,往往会有些不知所措。原因在于,统计软件,对时间变量的处理,与EXCEL并不一致,因此用惯了EXCEL的朋友,需要专门适应一下统计软件的处理方法。下面我们以Stata为例简析一下。
比如说,我们现在拿到了一个CPI同比的月度数据,如上图EXCEL表所示。用EXCEL可以很方便的做图等,但是我们现在把数据导入Stata之后,会发现时间列是红色,也就是说,在Stata看来,这列数据是文本格式,那么对时间作图等等,都是失败的。Stata会报错如下。
line cpi time
string variables not allowed in varlist;
time is a string variable
因此我们如果要在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”)
可以看到,新生成的时间变量timen,是一串整数,这是什么意思呢?第一,date这个命令识别的文本格式,是日度格式,如果原始数据是月份,比如1987-01,那么Stata会自动补充上日,默认为每个月的1号,即1987-01-01;第二,1987-01-01对应的9862,是指距离1960年1月1日的天数。
显然,这么一串数字,是不符合我们的阅读习惯的,我们需要把数字转换成我们易读的格式,那就要用的format命令,其格式是:
format timen %td
那么我们就看到,数字格式的时间,就转化成我们易读的格式,此时再作图,就没问题了。
运行:line cpi timen
如果我们并不需要日度时间,我们需要把日度时间,转换成月度时间,怎么操作呢?
如果直接使用format timen %tm,会有什么结果呢?我们来看看,显然是行不通的。2781m11,是把9862,转换成了距离1960年1月有9862个月的月份,那就成了2781年1月,显然不对。
此时我们需要日度时间,转换成月度时间,使用的命令是mofd,格式如下:
gen ti = mofd(timen)
此时,324的意思,是1987-01-01所在的月份,距离1960年1月的月数,我们再转换成易读的月份格式。
format ti %tm
我们再做个图看看,从下图可以看到,日期格式已经变成了月度。
我们最后总结一下,Stata中时间变量的处理。我们将EXCEL中的日期导入Stata之后,在Stata眼中,这是一个字符串,不会被识别。因此,第一步,我们要用date命令,将字符串形式的日期(日度数据),转换成Stata可以识别的日期,这是一串数字,是距离1960年1月1日的天数;第二步,这串数字,我们是不容易理解的,所以要用format命令,把这串数字转换成我们能看懂的日期;第三步,如果我们需要是月度、季度等日期,就用mofd、qofd命令,把距离1960年1月1日的天数,转换成距离1960年1月的月数或者季度数,再用format命令。
以上就是Stata中时间变量的处理的简单分析。
领取专属 10元无门槛券
私享最新 技术干货