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

如何在SAS中基于最小/最大日期填充缺失的FROM_NEW与TO_NEW字段

解决SAS数据集缺失日期的填充方案

嘿,我来帮你搞定这个SAS数据集的缺失日期填充问题!结合你说的两个具体场景,我整理了一套清晰的解决方案,咱们一步步来:

核心填充逻辑回顾

先把你提到的规则再明确下,避免理解偏差:

  • 缺失FROM_NEW(第2行):先找到同一ADM分组下TOS="FAC_IP"最后一行的TO_NEW,再在PRO_IP的日期里找大于该日期的最小日期来填充
  • 缺失TO_NEW(第25行):先找到同一ADM分组下TOS="FAC_IP"最后一行的FROM_NEW,再在PRO_IP的日期里找小于该日期的最大日期来填充

具体SAS实现代码

我用PROC SQL结合子查询来实现,逻辑清晰还方便分组匹配,你直接替换成你的数据集名称就能用:

/* 第一步:先提取每个ADM下TOS="FAC_IP"最后一行的日期信息 */
proc sql;
    create table adm_fac_last as
    select ADM,
           /* 取FAC_IP组最后一行的FROM_NEW(用max是默认按日期排序的最后一行) */
           max(case when TOS='FAC_IP' then FROM_NEW else . end) as fac_last_from format=date9.,
           /* 取FAC_IP组最后一行的TO_NEW */
           max(case when TOS='FAC_IP' then TO_NEW else . end) as fac_last_to format=date9.
    from your_raw_dataset  /* 替换成你的原始数据集名称 */
    group by ADM;
quit;

/* 第二步:针对缺失字段做填充 */
proc sql;
    create table filled_dataset as
    select 
        a.*,
        /* 填充缺失的FROM_NEW:匹配PRO_IP中大于fac_last_to的最小日期 */
        case when a.FROM_NEW is missing then
            (select min(b.PRO_IP) from your_raw_dataset b 
             where b.ADM = a.ADM and b.PRO_IP > c.fac_last_to)
        else a.FROM_NEW end as FROM_NEW_filled format=date9.,
        /* 填充缺失的TO_NEW:匹配PRO_IP中小于fac_last_from的最大日期 */
        case when a.TO_NEW is missing then
            (select max(b.PRO_IP) from your_raw_dataset b 
             where b.ADM = a.ADM and b.PRO_IP < c.fac_last_from)
        else a.TO_NEW end as TO_NEW_filled format=date9.
    from your_raw_dataset a
    left join adm_fac_last c on a.ADM = c.ADM;
quit;

额外说明(针对特殊情况)

如果你的数据集里TOS="FAC_IP"的最后一行不是按日期大小判断,而是按原始数据的行顺序,那可以先给数据集加行号再筛选:

data dataset_with_row;
    set your_raw_dataset;
    by ADM;
    if first.ADM then row_num=0;
    row_num+1;
run;

之后在第一个PROC SQL里,用row_num的最大值来定位FAC_IP的最后一行即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:47:47