我正在处理处方索赔数据。对象 X 有 20 行显示他开处方的日期。在观察 5 之前,他每月都按处方配药。这是时间块 1。下一次观察的填充日期为 2 年后,并且每月填充接下来的 15 行。这是时间区 2。
问题:如何计算每个时间组的用药时间?我不想包括受试者 x 没有填写他的处方的 2 年时间范围。
可以分两步完成:首先,我们“标记”块;然后将它们分组。您的数据集应按主题和日期(升序)进行预排序。
data have2;
set have;
by Subject;
if Date-lag(Date)>30 then Block+1;
if FIRST.Subject then Block=1;
run;
proc sql;
create table blocks as
select Subject, Block, max(Date)-min(Date) as Duration
from have2
group by Subject, Block;
quit;