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

如何生成与SAS Proc Compare打印结果结构一致的输出数据集并解决ID重复问题

SAS PROC COMPARE 输出ID重复问题解决方法

问题原因

你当前代码中使用的outbase、outcomp参数默认会为每个存在差异的ID分别生成两条记录:

  • 一条标记_TYPE_='BASE',存储base数据集的对应取值
  • 一条标记_TYPE_='COMPARE',存储compare数据集的对应取值
    因此会出现ID变量bridge_recip_id重复出现的问题。

解决方案

方案1:使用TRANSPOSE参数(推荐,适配SAS 9.4及以上版本)

在PROC COMPARE语句中添加transpose参数,该参数会自动将BASE和COMPARE的取值转为列维度存储,每个ID仅保留一行记录,完全匹配你需要的输出结构:

proc compare base= b compare=c out= discordant outnoequal outbase outcomp transpose;
    id bridge_recip_id;
run;

方案2:手动转置处理(适配低版本SAS)

如果你的SAS版本不支持transpose参数,可以对现有输出数据集做二次处理,合并同一ID的两条记录为一行:

* 按ID和记录类型排序;
proc sort data=discordant;
    by bridge_recip_id _type_;
run;

* 合并同ID的BASE和COMPARE记录,按需求重命名字段;
data discordant_final;
    merge 
        discordant(where=(_type_='BASE') rename=(/* 按你的实际字段列表修改,示例如下 */
            _obs_ = obs_base
            变量1 = 变量1_base
            变量2 = 变量2_base
        ))
        discordant(where=(_type_='COMPARE') rename=(
            _obs_ = obs_comp
            变量1 = 变量1_comp
            变量2 = 变量2_comp
        ));
    by bridge_recip_id;
    drop _type_ _diff_; * 按需删除不需要的中间字段;
run;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:45:03