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

在SAS中按患者ID将多行二分类变量折叠为单一行的代码求助

SAS实现患者ID维度多行二分类变量折叠为单行的代码方案

以下是两种常用实现方案,可根据你的实际场景选择:

方案1:PROC SQL快速实现(适用于需保留同一患者所有指标是否存在阳性的场景)

如果需求是同一患者ID下,只要任意一行记录对应二分类指标为1,最终结果中该指标就取1,无阳性记录则取0,可直接用聚合函数实现,代码简洁:

proc sql;
    create table 输出表名 as
    select 患者ID字段名,
           max(二分类变量1) as 二分类变量1,
           max(二分类变量2) as 二分类变量2
           /* 剩余二分类变量按以上格式补充即可 */
    from 原始输入表名
    group by 患者ID字段名;
quit;

方案2:PROC TRANSPOSE通用转宽实现(适用于需保留同一患者所有行的二分类值的场景)

如果需求是把同一患者的多次记录的二分类值,分别作为不同列存储到单行中,可使用转宽逻辑实现:

/* 步骤1:为同一患者ID下的多条记录生成顺序号 */
data temp;
    set 原始输入表名;
    by 患者ID字段名;
    if first.患者ID字段名 then seq=1;
    else seq+1;
run;

/* 步骤2:按患者ID转宽为单行结构 */
proc transpose data=temp out=输出表名(drop=_name_) prefix=分类记录_;
    by 患者ID字段名;
    id seq;
    var 要折叠的二分类字段名;
run;

使用前请将代码中的中文占位符替换为你实际数据集的表名、字段名即可运行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:36:04