作者rover99 (另一扇门)
看板Statistics
标题Re: [程式] sas时间格式处理问题
时间Sat Jun 5 22:25:37 2010
就我的认知
读进资料格式要用informat
将电脑资料显示我们要的格式要用format
data aa;
informat date yymmdd10.;
format date yymmdd10.;
input date;
cards;
19970422
20020808
19961025
;
run;
藉由这篇文章
想衍生一下我遇到的问题
我有两个变数 start_date, end_month
start_date 已读入sas,设成日期格式,格式设成 yymmdd10. (ex:20090101)
end_month 已读入sas,设成「数字」格式 (ex:200905)
现在我想要计算start_date和end_month之间差了几个月
理想状况可以用 intck('month', start_date, end_month)
所以想将end_month由「数字」格式转成「日期格式」
试了几种方法都失败
想请问大家,我失败的地方在哪边?
想法一:
end_date=compress(end_month||10); /*想将200905变成20090510*/
informat end_date yymmdd10.; /*并且将20090510让sas读成日期格式*/
再用 intck('month', start_date, end_date) 来计算两个日期格式的差异月数
不过...失败
想法二:
end_date = end_month*100+10;
/*用compress函数行不通,我直接计算出20090510这个数字 XD*/
informat end_date yymmdd10.;
再用 intck('month', start_date, end_date)
还是失败
看了上一篇i版友的回答
我试着用 MDY 这个函数产生 end_date ,结果是可行的
不过还是想讨论看看,上述我两种想法哪边有问题
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.136.108.103