当年份是字符型数据时候destring date,replace ignore(-)或
gen ymd=date(year1,"YMD")
gen year1=year(ymd)
gen month=month(ymd)
gen day=day(ymd)
假设时间变量名为v1,显示为yyyymmdd的形式
对于v1是数字格式的情况,可用如下代码转换为Stata时间日期格式
gen year=int(v1/10000)
gen month=int((v1-year*10000)/100)
gen day=int((v1-year*10000-month*100))
gen date=mdy(month,day,year)
format date %td
或对于v1是字符串格式的情况,还可以可使用如下代码:
gen date=date(v1,"YMD")
format date %td %tm %tq %th %ty
当年份已经是数字型数据时候以上方法失效,例如date/month/year,具体如01nov1999在%td格式下面是一段奇怪数字,应进行如下结构转换
把日数据变成月度数据:
还是假设时间变量名为v1
gen ym=mofd(v1)
如果变成年度数据;
gen ym=yofd(V1)
如果变成季度数据:
gen yq=qofd(V1)
所以对于已经是01nov1999格式特别是wind数据就存在日/月/年格式本身已经被设置好为数值型年份格式,如果要提取转变为年月或年份数据,采用字符型公式转换是一段奇怪数值,
Stata中数据日期格式问题,虽然该博客讲到了数值型结构转换的方法,但
变成年度数据;gen Year=year(DateAnnounced)的公式是错误的,而该博客粘贴的英文说明却给出正确的转换方法,欢迎各位爱好者提出更好方法,也希望那些初学者不用苦恼到处翻帖找不到处理方法,不得不用Excel处理好再导,浪费很多宝贵时间,本帖是希望让更多初学者少走弯路,避免大量时间研究这种重复性问题,能花更多时间进行开创性研究。