2014年6月23日月曜日

UPDATEステートメントでオブザベーションをまとめる

UPDATEステートメントの本来の使い方から外れますが、私がよくやる具体例を紹介。
まずサンプル作りから。

*** 患者背景データ ;
data DT1;
length SUBJID $3.;
input SUBJID$ AGE SEX$;
cards;
001 51 F
002 25 M
003 30 F
;
run;
proc sort data=DT1; by SUBJID; run;

 SUBJID  AGE  SEX 
 001 51 F
 002 25  M
 003 30 F

*** 有害事象データ ;
data DT2;
length SUBJID $3. AETERM $20.;
input SUBJID$ AETERM$ ;
cards;
001 発熱
001 不眠
003 腹痛
;
run;
proc sort data=DT2; by SUBJID; run;

 SUBJID 
AETERM 
 001
 発熱    
 001
 不眠 
 003
 腹痛 

DT1は患者ID(SUBJID)毎の年齢(AGE)や性別(SEX)など患者情報が入っているデータです。
DT2は患者ID(SUBJID)毎の治験実施時の有害事象(AETERM)が入っているデータです。

ここで以下のように書くと、、
data OUT3;
   update  DT1 
               DT2 (keep=SUBJID in=X);
   by SUBJID;
   if  X  then AEFLG=1;
run;


 SUBJID  AGE  SEX  AEFLG 
 001 51 F 1
 002 25  M .
 003 30 F 1

有害事象が発現してるかどうかの変数AEFLGを患者背景データに作ることができました。
UPDATEステートメントによって有害事象データがBY値毎に1行にまとまってくれるとこが便利です。

仕組みについては「UPDATEステートメント入門」を参照。
もっと面白いことができるのでまた今度紹介したいと思います。

0 件のコメント:

コメントを投稿