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

如何将同ID下非缺失的Variable2值移至All非缺失的观测行?

SAS数据处理:迁移同一ID下的Variable2非缺失值

原始数据集(have)

data have;
  input ID :$20. Admission :date09. Discharge :date09. All  Variable1 Variable2; 
  format Admission date9. Discharge date9.;
cards;
0001 13JAN2015 20JAN2015 2.45  3.5    .
0001 21FEB2015 31DEC2015   .    .    2.3
0002 01JAN2015 31DEC2015 2.00  7.5    .
0002 14FEB2020 21FEB2020   .    .    1.0
;
run;

目标数据集(want)

data want;
  input ID :$20. Admission :date09. Discharge :date09. All  Variable1 Variable2; 
  format Admission date9. Discharge date9.;
cards;
0001 13JAN2015 20JAN2015 2.45  3.5   2.3
0001 21FEB2015 31DEC2015   .    .     .
0002 01JAN2015 31DEC2015 2.00  7.5   1.0
0002 14FEB2020 21FEB2020   .    .     .
;
run;

需求说明

将同一ID下Variable2的非缺失值,迁移至该ID中All变量非缺失的观测行,同时将原Variable2非缺失行的Variable2置为缺失。

解决方案

方法1:BY组+RETAIN变量处理

先对数据集按ID排序,再利用BY组逻辑和RETAIN变量保留同一ID的Variable2非缺失值,完成赋值和清空操作:

/* 按ID排序,确保同ID观测连续 */
proc sort data=have;
    by ID;
run;

data want;
    set have;
    by ID;
    /* 定义临时变量存储同一ID的Variable2非缺失值 */
    retain _temp_var2;
    /* 每个ID的第一行初始化临时变量 */
    if first.ID then _temp_var2 = .;
    /* 捕获非缺失的Variable2值 */
    if not missing(Variable2) then _temp_var2 = Variable2;
    /* 给All非缺失的行赋值Variable2 */
    if not missing(All) then Variable2 = _temp_var2;
    /* 原Variable2非缺失的行,清空该变量 */
    else if not missing(Variable2) then Variable2 = .;
    /* 删除临时变量 */
    drop _temp_var2;
run;

方法2:SQL提取映射+合并处理

先通过SQL提取每个ID对应的Variable2非缺失值,再合并回原始数据集完成替换:

/* 提取每个ID的Variable2非缺失值(假设每个ID仅一个非缺失值) */
proc sql;
    create table var2_id_map as
    select ID, max(Variable2) as target_var2
    from have
    where not missing(Variable2)
    group by ID;
quit;

/* 合并并更新Variable2 */
data want;
    merge have var2_id_map;
    by ID;
    /* 给All非缺失的行赋值 */
    if not missing(All) then Variable2 = target_var2;
    /* 原Variable2非缺失的行清空 */
    else if not missing(have.Variable2) then Variable2 = .;
    /* 删除中间变量 */
    drop target_var2;
run;

内容的提问来源于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.14 12:47:10