時間間隔的計算,在許多研究中是很重要的,包括用藥時間、存活時間、居住時間、曝露在特定污染環境的時間、住院時間等。所使用的SAS函數為INTCK('interval',from,to)。'INTERVAL'為起迄時間的時間間隔,單位可以是day, week, month, quarter, year等。FROM與TO各是「起」與「迄」的時間。
[程式一] 建立一組起迄時間,依序是start_date, end_date,日期格式是yymmdd10.,即西元年-月-日的格式。
[程式二] 在程式二中產生了5個變項(VARIABLE),DAY, MONTH1, MONTH2, YEAR1, YEAR2。DAY為介於起迄間的天數;MONTH1為以SAS預設的MONTH計算起迄間的月數,從結果可知,SAS將取整數的月數(128個月),小數點會被捨去(即無條件捨去);MONTH2為以DAY除以30.475計算精準的月數(128.263個月);同樣地YEAR1為以SAS預設的YEAR計算的起迄間的年數,從結果可知,SAS將取整數的年數(10年),小數點會被捨去(即無條件捨去);YEAR2為以DAY除以365.25(每4年潤年一次)計算精準的年數(10.6886年)。
[程式一];
data aa;
input id $ start_date yymmdd10. end_date yymmdd10.;
format start_date end_date yymmdd10.;
cards;
A01 1998-02-032008-10-12
;
proc print;
run;
[程式二];
data bb;
set aa;
day=intck('day',start_date,end_date);
month1=intck('month',start_date,end_date);
month2=intck('day',start_date,end_date)/30.4375;
year1=intck('year',start_date,end_date);
year2=intck('day',start_date,end_date)/365.25;
proc print;
run;
[結果]
Obs id start_date end_date day month1 month2 year1 year2
1 A01 1998-02-03 2008-10-12 3904 128 128.263 10 10.6886
;
留言列表