Re: [程式] SAS 計算民國日期

看板Statistics作者 (........)時間12年前 (2014/02/20 00:08), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
其實 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
文章代碼(AID): #1J1DRsiZ (Statistics)
文章代碼(AID): #1J1DRsiZ (Statistics)