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

如何在SAS Enterprise Guide中按日期分组取指定列最大值并保留全列

在SAS Enterprise Guide中实现按日期分组保留COL2最大值行的方法

方法一:使用PROC SQL(代码简洁,推荐)

通过分组计算每组COL2的最大值,再关联原表筛选出对应完整行:

PROC SQL;
    CREATE TABLE WANT AS
    SELECT A.*
    FROM HAVE A
    INNER JOIN (
        SELECT COL1, MAX(COL2) AS MAX_COL2
        FROM HAVE
        GROUP BY COL1
    ) B
    ON A.COL1 = B.COL1 AND A.COL2 = B.MAX_COL2;
QUIT;

代码说明:

  • 子查询B按COL1(日期)分组,计算每个日期对应的COL2最大值MAX_COL2
  • 主查询将原表A与子查询B关联,匹配日期和对应最大值,筛选出符合条件的完整行
  • 若同一日期存在多个COL2等于最大值的行,会全部保留;如需仅保留一行,可添加DISTINCT或额外排序条件

方法二:使用DATA步(适合自定义排序逻辑的场景)

先按日期分组、COL2降序排序,再利用BY组特性保留每组的第一行:

/* 按日期分组,同组内COL2降序排序 */
PROC SORT DATA=HAVE OUT=HAVE_SORTED;
    BY COL1 DESCENDING COL2;
RUN;

/* 保留每组的第一条记录(即COL2最大的行) */
DATA WANT;
    SET HAVE_SORTED;
    BY COL1;
    IF FIRST.COL1 THEN OUTPUT;
RUN;

代码说明:

  • PROC SORT将数据按COL1分组,同组内按COL2从大到小排序,确保每组第一行是COL2最大值的行
  • DATA步中,FIRST.COL1标记每组的第一条记录,通过OUTPUT仅保留该行
  • 若同一日期有多个COL2最大值,此方法仅保留排序后的第一行,可通过添加其他排序字段控制保留哪一行

SAS Enterprise Guide操作步骤

  1. 导入或连接你的源数据集(代码中用HAVE指代,可替换为实际表名)
  2. 新建SAS程序节点,粘贴上述任意一段代码
  3. 运行程序,生成的WANT数据集即为符合需求的结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:31:03