如何移除应用旧版本号并汇总申请金额?(SAS Enterprise Guide数据集查询)
SAS基础操作解决方案:保留最高版本记录并汇总金额
一、保留每个application_ID的最高version_num记录
有两种常用实现方式,根据习惯选择即可:
方法1:PROC SORT + DATA步
先按application_ID分组,再按version_num降序排序,确保每个分组的最高版本排在首位;接着用DATA步的first.变量筛选出每个分组的第一条记录:
/* 排序数据集 */ proc sort data=your_dataset out=sorted_data; by application_ID descending version_num; run; /* 保留每个application_ID的最高版本记录 */ data keep_latest_version; set sorted_data; by application_ID; if first.application_ID; run;
方法2:PROC SQL关联查询
通过子查询获取每个application_ID的最大版本号,再关联原数据集筛选对应记录:
proc sql; create table keep_latest_version as select a.* from your_dataset a inner join ( select application_ID, max(version_num) as max_version from your_dataset group by application_ID ) b on a.application_ID = b.application_ID and a.version_num = b.max_version; quit;
二、按client_ID汇总grant_request金额
基于第一步得到的keep_latest_version数据集,用以下两种方式完成汇总:
方法1:PROC SUMMARY
适合快速生成汇总统计,nway参数表示只输出分组汇总结果:
proc summary data=keep_latest_version nway; class client_ID; var grant_request; output out=client_summary sum=total_grant; run; /* 查看汇总结果 */ proc print data=client_summary; run;
方法2:PROC SQL分组聚合
用group by和sum()函数直接计算每个client的总金额:
proc sql; create table client_summary as select client_ID, sum(grant_request) as total_grant from keep_latest_version group by client_ID; quit;
学习重点提示
结合你正在学习的Udemy入门课程和书籍,可以重点深挖这些知识点:
- DATA步中
by语句与first./last.变量的逻辑与应用 - PROC SORT的排序规则及分组排序场景
- PROC SQL的关联查询、分组聚合语法
- PROC SUMMARY/PROC MEANS的汇总统计功能
内容的提问来源于stack exchange,提问作者Adrienne de Souza
相关产品推荐
相关产品推荐

