必要があって、最終投与後時間からの経過時間を計算した。普通は生データはこうなってないから、下に示す計算はあまりやらないと思うのだが。
初回投与後8時間で2度目の投与をし12時間、24時間に採血したとする。プログラムとしては各時点の間隔をINTERVALという変数に格納し、採血した時点についてはINTERVALを積算する。まず、基本的なテクニックは以下の通り。
DATA Example;
retain TIME_OLD;
TIME_OLD = 0;
do TIME = 0, 1, 2, 4, 8, 12, 24;
INTERVAL = TIME - TIME_OLD;
output;
TIME_OLD = TIME;
end;
RUN;
DATA Example2;
set Example;
MDV = 1;
if TIME = 12 or TIME = 24 then MDV = 0;
RUN;
DATA Example3;
set Example2;
sum + INTERVAL ;
if MDV =0 then sum2 + INTERVAL;
RUN;
こんなかんじ。retainステートメントを使うあたりは慣れないと戸惑うかもしれない。
NONMEMのデータセットが既にできていて、そこから構成する場合は以下の通り。
DATA DAT_Plot;set DAT;RUN;
DATA DAT_Plot2;
set DAT_Plot;
if TIME = 0 then do;TIME_OLD=0;INTERVAL=0;end;
if DV ne 0 then MDV = 0;else MDV=1;
retain TIME_OLD;
INTERVAL = TIME-TIME_OLD;
output;
TIME_OLD = TIME;
keep ID TIME TIME_OLD INTERVAL DV MDV;
RUN;
DATA DAT_Plot3;
set DAT_Plot2;
if MDV = 0 then sum+INTERVAL;
else sum=0;
rename sum=TARD;
RUN;
PROC GPLOT data=DAT_Plot3;
where TARD ne 0;
plot DV * TARD;
symbol value=circle color=blue i=none;
RUN;QUIT;
まぁ、あまりやらないと思う。生データが初回投与後時間になっているということはあまりないし。あくまでNONMEMデータが先に手に入っているとか、それを作った後でプロットを作るというようなとき。
最近のコメント