在臨床資料或健保資分析中,時間點的定義是很重要的,例如用藥後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為單位,增加-3interval,因此為就醫前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;

arrow
arrow
    文章標籤
    時間函數 SAS INTNX( )
    全站熱搜

    estat 發表在 痞客邦 留言(0) 人氣()