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

如何将SAS中按州、年份分组的多观测合并为单观测?

SAS多行数据合并为单行的实现方案

针对同一State和year分组下的多行费率数据合并需求,提供两种高效实现方法:

方法1:PROC SQL分组聚合

通过SQL分组,利用MAX()函数提取每组内各费率变量的非缺失值(每组内该变量仅存在一个有效值,MAX()会自动忽略缺失值):

proc sql;
    create table test_01 as
    select State,
           year,
           max(rt_15_30) as rt_15_30,
           max(rt_31_60) as rt_31_60,
           max(rt_61plus) as rt_61plus
    from test_00
    group by State, year;
quit;

方法2:DATA步+BY语句+RETAIN

先对数据集按分组变量排序,再用RETAIN保留变量值,仅输出每组最后一条观测:

步骤1:排序数据集

proc sort data=test_00;
    by State year;
run;

步骤2:合并数据

data test_01;
    set test_00;
    by State year;
    /* 保留费率变量,避免每次循环重置 */
    retain rt_15_30 rt_31_60 rt_61plus;
    
    /* 用当前观测的非缺失值更新保留变量 */
    if not missing(rt_15_30) then rt_15_30 = rt_15_30;
    if not missing(rt_31_60) then rt_31_60 = rt_31_60;
    if not missing(rt_61plus) then rt_61plus = rt_61plus;
    
    /* 仅输出每组的最后一条观测 */
    if last.year then output;
run;

两种方法均可生成目标数据集test_01:PROC SQL写法简洁高效,适合常规场景;DATA步则更灵活,可扩展处理复杂合并逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 03:22:48