作者imaltar (..)
站内Statistics
标题Re: [程式] SAS 计算民国日期
时间Wed Feb 19 23:42:40 2014
※ 引述《chatavide (chatavide)》之铭言:
: [软体程式类别]:
: sas
: [程式问题]:
: 资料处理
: [软体熟悉度]:
: 中(3个月到1年)
: [问题叙述]:
: 想计算两栏位的日期差几天,但是原始档案是以民国的格式呈现(文字格式)
: Logdate Startdate
: 0900824 0900827
: 0950513 0950501
: 1010721 1010723
: 参考网路的资料後,我先尝试将它转成mdy的格式
: data test002;
: set test001;
: logdate2=mdy(input(substr(logdate,4,2),2.),input(substr(logdate,6,2),2.),
: input(substr(logdate,1,3),3.));
: run;
: 但出现问题如下:
: NOTE: Invalid argument to function MDY at line 128 column 10.
: LOGDATE=1010721 startdate=1010723 logdate2=. _ERROR_=1 _N_=57
: 想请教大家该怎麽处理?
: 另外,是否有其他方法可以计算民国日期差
: 目前是用很笨的方法:
: substr成yy,mm,dd三栏
: 然後yyyy=yy+1911
: 之後再将yyyy,mm,dd三栏合并成一栏
: data test9991;
: set test999;
: length logdate2 $25;
: logdate2 = trim(yyyy) || trim(mm) || trim(dd) ;
: logdate2=compress(logdate2);
: put logdate2;
: run;
: 感谢!
我也是尝试将年+1911去处理,不过可能会比较精简,你参考看看~~~
data a;
input Logdate $ Startdate $;
cards;
0900824 0900827
0950513 0950501
1010721 1010723
;
run;
data a;set a;
Logdate2=input(compress(tranwrd(Logdate,substr(Logdate,1,3),
substr(Logdate,1,3)+1911)),yymmdd10.);
Startdate2=input(compress(tranwrd(Startdate,substr(Startdate,1,3),
substr(Startdate,1,3)+1911)),yymmdd10.);
*format Logdate2 Startdate2 yymmddn8.;
run;
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.228.27.62
※ 编辑: imaltar 来自: 61.228.27.62 (02/19 23:43)