Re: [程式] sas時間格式處理問題
就我的認知
讀進資料格式要用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
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 3 之 4 篇):