在臨床資料或健保資分析中,時間點的定義是很重要的,例如用藥後6個月、發病前1年、住院後7天等,至於這些時間點該如何標示,是今天要介紹的重點,通常我們會採用的時間函函數為 intnx( )。函數的語法為INTNX(interval, start-from, increment)
[程式一] 利用[程式一]建立一筆資料,共有2個欄位,身份證號(ID)、就醫日期(in_date),日期格式為yymmdd10.,即yyyy-mm-dd格式,
[程式一];
data aa;
input id $ in_date yymmdd10.;
format in_date yymmdd10.;
cards;
A01 1998-02-03
;
proc print;
run;
[程式二]
請參考程式二,並且執行看看。
語法 |
說明 |
in_date1=intnx('month',in_date,-3) |
以in_date作為開始日期(start_form),時間增加的間距(interval)以month為單位,增加-3個interval,因此為就醫前3個月,但SAS的日期標示將是住院日前第3個月的第一日,故為1997-11-01。 |
in_date1=intnx('month',in_date,3) |
為就醫後3個月,但SAS的日期標示將是住院後第3個月的第一日,故為1998-05-01。 |
index_date3=intnx('day',in_date,-3*30) |
以DAY為單位,假設1個月為30天,計算住院前3個月(共90天)的日期,故為1997-11-05。 |
index_date4=intnx('day',in_date,3*30) |
以DAY為單位,假設1個月為30天,計算住院後3個月(共90天)的日期,故為1998-05-04。 |
index_date5=intnx('month',in_date,0) |
與住院日同一個月的日期,SAS的日期標示將是該月的第一日,故為1998-02-01。 |
index_date6=intnx('month',in_date,0,'sameday') |
與住院日同一天。 |
index_date7=intnx('year',in_date,2,'end') |
2年後的年底。 |
index_date8=intnx('year','15JUN00'd,2) |
以日期常數(2000-06-15)定義2年後的日期,但SAS的日期標示將是該年的第一日,故為2002-01-01。 |
index_date9=intnx('year','15JUN00'd,2,'same') |
以日期常數(2000-06-15)定義2年後的同一天,故為2002-06-15。 |
[程式二];
data bb;
set aa;
index_date1=intnx('month',in_date,-3); /*-前3個月-*/
index_date2=intnx('month',in_date,3); /*-後3個月-*/
index_date3=intnx('day',in_date,-3*30); /*-前3個月-*/
index_date4=intnx('day',in_date,3*30); /*-後3個月-*/
index_date5=intnx('month',in_date,0); /*-與住院日同一個月-*/
index_date6=intnx('month',in_date,0,'sameday'); /*-與住院日同一天-*/
index_date7=intnx('year',in_date,2,'end'); /*-2年後的年底--*/
index_date8=intnx('year','15JUN00'd,2); /**/
index_date9=intnx('year','15JUN00'd,2,'same'); /*以日期常數定義2年後的日期,但日期必須為2年後的同一天*/
format index_date1-index_date9 yymmdd10.;
proc print;
run;
留言列表