Re: [程式] SAS 計算民國日期
其實 SAS 有個 Informat 可以直接吃民國紀年,吃進去就是 SAS 的時間數值了,
接著你可以改 Format 去調整你要顯示的日期格式,或者任何日期運算~!
data MINGUO_TEST;
input Logdate minguo8. Startdate minguo8.;
format logdate Startdate yymmdd10.;
cards;
0900824 0900827
0950513 0950501
1010721 1010723
;
run;
※ 引述《imaltar (..)》之銘言:
: ※ 引述《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: 111.240.35.153
推
02/20 00:42, , 1F
02/20 00:42, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):