以下是引用lihoujian在2009-3-22 1:14:00的发言:感谢连老师的帮助,但是小弟愚昧,经过几天折腾,还是未果,在stata里面怎么设置月度数据变量,日度数据变量呢,
我的日期是iddate :1999年01月-2006年12月,输入的变量是红色的,我用tsset iddate,出现的结果是:varlist: iddate1: string variable not allowed,也就是说类型不对,然后我用encode iddate,generate (iddate1),发现那些日期变量变成了蓝色,然后format iddate1 %tm,tsset iddate ,出现的结果是 time variable: iddate1, 1960m2 to 1968m1
delta: 1 month
最后我定义其他变量时都出现这种状况:time variable must contain only integer values
这个有点奇怪,我对stata时间序列比较白痴,希望大家指导一下
houjian兄弟够执着的,呵呵。
下面是我的stata高级视频中的一段命令,你运行一下就可以找到问题所在,其实你已经非常接近答案了,只需要设定一下起始时点即可。在stata中,有一个基本时点的概念,0对应1960年1月。
*-------------------------------------------
*--- 日期的格式 help tsfmt
*
* 基本时点:整数数值,如 -3, -2, -1, 0, 1, 2, 3 ....
* 1960年1月1日,取值为 0;
* 显示格式:
* -------------------------------
* 定义 含义 默认格式
* -------------------------------
* %td 日 %tdDlCY
* %tw 周 %twCY!ww
* %tm 月 %tmCY!mn
* %tq 季度 %tqCY!qq
* %th 半年 %thCY!hh
* %ty 年 %tyCY
* -------------------------------
* 相同的基本时点,采用不同的方式显示会有不同的效果
clear
set obs 100
gen t = _n
replace t = t-3
local format "td tw tm tq th ty"
foreach f of local format{
gen t_`f' = t
format t_`f' %`f'
}
list in 1/20
* 说明:同样的数值,采用不同的显示方式,会有完全不同的含义
* 指定起始时点
cap drop month
generate month = m(1990-1) + _n - 1 /*houjian兄弟只需要改动 m() 中的数值即可*/
format month %tm
list t month in 1/20
*-------------------------------------------