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

如何使用SAS合并两个数据集并按两种场景修正Visit Date?

SAS实现数据集合并与日期修正方案

核心思路

以信息准确的Main数据集为基准,通过Patient ID + Visit作为关联核心,将存在日期错误的第二个数据集(命名为Err_Dataset)的检测结果映射到Main的正确日期行:

  • 场景1(同一Visit对应多日期):自动为Main中未匹配到结果的日期行填充缺失值
  • 场景2(日期错误):直接忽略Err_Dataset的错误日期,将结果关联到Main的正确日期

简洁SAS代码

/* 预处理错误数据集:重命名日期变量避免合并冲突 */
data err_dataset_adj;
    set err_dataset;
    rename visit_date = err_visit_date; /* 标记错误日期字段 */
run;

/* 左连接合并,保留Main的所有正确维度 */
proc sql;
    create table final_output as
    select 
        m.patient_id,
        m.visit,
        m.visit_date,
        m.result1,
        e.result2
    from main as m
    left join err_dataset_adj as e
        on m.patient_id = e.patient_id 
        and m.visit = e.visit
        and m.visit_date = e.err_visit_date /* 仅匹配日期正确的记录 */
    order by m.patient_id, m.visit, m.visit_date;
quit;

/* 可选:将缺失的Result2统一显示为点号(匹配示例输出格式) */
data final_output_display;
    set final_output;
    if missing(result2) then result2 = .; /* 若Result2是字符型,替换为"" */
run;

代码说明

  1. 错误数据集预处理:重命名错误日期变量,避免和Main的正确日期字段冲突,同时明确区分两类日期
  2. 左连接逻辑:
    • 以Main的所有行作为基础,确保不丢失任何正确的日期记录
    • 仅关联Err_Dataset中日期与Main匹配的结果;对于场景2的错误日期,因无法匹配到Main的正确日期,左连接会自动将Result2关联到Main对应Patient ID + Visit的唯一正确日期行
  3. 缺失值格式化:可选步骤,将未匹配到结果的Result2统一显示为点号,和示例输出格式一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 13:07:25