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

在SAS Enterprise Guide中用PROC SQL/SAS代码实现ID-EVENT分组的GRADE优先级聚合

SAS实现按ID-EVENT分组筛选优先级GRADE的两种方法

假设原始数据表名为original_data,包含字段ID(数值型)、EVENT(字符型)、GRADE(字符型,仅取值P/C/S),以下提供两种实现需求的方法:

方法一:常规SAS数据步+排序

先通过排序给GRADE按优先级(P > C > S)排序,再按ID-EVENT分组取第一条记录:

/* 按ID、EVENT分组,同时按GRADE优先级排序:P排最前,其次C,最后S */
proc sort data=original_data;
    by id event descending (grade='P') descending (grade='C') grade;
run;

/* 分组后仅保留每组的第一条记录(即优先级最高的GRADE) */
data result_data;
    set original_data;
    by id event;
    if first.event; /* 标记每组的第一条记录,仅输出该条 */
run;

方法二:PROC SQL分组判断

通过分组聚合判断每组是否存在P/C,按优先级返回对应GRADE:

proc sql;
    create table result_data as
    select 
        id, 
        event,
        /* 优先级判断:先检查是否有P,再检查是否有C,否则返回S */
        case
            when max(grade='P') then 'P'
            when max(grade='C') then 'C'
            else 'S'
        end as grade
    from original_data
    group by id, event; /* 按ID和EVENT分组 */
quit;

两种方法均能得到符合需求的结果:

IDEVENTGRADE
123NYP
55MADC
55LONS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:15:39