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

按ID和日期比对SAS数据集变量并生成New_Var的方法

SAS数据集匹配生成新变量解决方案

核心思路

  • 先清理DB1的重复数据:由于同一ID+入院/出院日期对应的Variable_值一致,直接按这三个字段去重,保留唯一行即可
  • 以DB为主表,和去重后的DB1做左连接,确保DB的所有记录都能保留到结果集里
  • 根据连接后的字段值,按规则生成新变量New_Var

具体代码实现

/* 第一步:对DB1去重,消除重复的日期记录 */
proc sort data=DB1 nodupkey;
    by ID Admission Discharge;
run;

/* 第二步:左连接数据集并生成新变量 */
proc sql;
    create table DB2 as
    select 
        DB.*,
        /* 严格按规则赋值:仅当DB.Variable=0且匹配到的DB1.Variable_=1时New_Var=1,其余情况为0 */
        case 
            when DB.Variable = 0 and DB1.Variable_ = 1 then 1
            else 0
        end as New_Var
    from DB
    left join DB1
        on DB.ID = DB1.ID
        and DB.Admission = DB1.Admission
        and DB.Discharge = DB1.Discharge
    order by DB.ID, DB.Admission, DB.Discharge;
quit;

关键说明

  • 左连接保证DB的所有记录都被保留,即使在DB1中找不到对应匹配项,此时New_Var会自动取0
  • nodupkey去重是安全的,因为题目明确DB1重复日期对应的Variable_值一致,不会丢失有效信息
  • 如果DB中存在多条相同ID+日期的记录,连接后会正常匹配,不会出现异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 14:12:40