You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAS统计用药时长:间隔超90天停当前ID并继续下一个ID的实现

筛选符合随访间隔要求的患者记录解决方案

要实现“当两次随访间隔>90天时,停止保留当前ID的后续记录,但继续处理下一个ID”的需求,可通过在SAS数据步中添加保留标记变量来实现,修改后的代码如下:

data want;
    set have1;
    by id;
    retain keep_flag 1;
    if first.id then do;
        keep_flag = 1;
        output;
    end;
    else do;
        if dif <= 90 and keep_flag = 1 then output;
        else if dif > 90 then keep_flag = 0;
    end;
run;

代码逻辑说明

  • retain keep_flag 1:声明标记变量并保留其值,避免每次处理新观测时重置,确保标记能跨同ID的观测传递
  • 首次观测处理:每个ID的第一条记录(first.id)强制保留,同时重置标记为1,保证新ID从头开始判断
  • 后续观测处理:
    • 若当前间隔dif≤90且标记为1,保留该记录
    • 若间隔dif>90,将标记设为0,后续同ID的所有记录都不再保留
  • 不同ID之间互不影响,处理完一个ID后自动切换到下一个ID重新开始判断

预期输出结果

对应示例数据,最终保留的记录为:

  • ID101:前3条(第4条间隔超90,停止保留)
  • ID102:全部4条(所有间隔均≤90)
  • ID103:全部3条(所有间隔均≤90)
  • ID104:第1条(第2条间隔超90,停止保留)

内容的提问来源于stack exchange,提问作者Taylor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:28:29