【发布时间】:2021-04-15 04:06:40
【问题描述】:
我正在尝试使用宏程序来制作按总 GPA 排序的前 10% GPA 的记录,结果是 24 个最高 GPA,它们有超过 60 个学分但少于 130 个学分。 下面是我的代码
%MACRO TopTen(outputtable, less, more);
PROC SQL;
select round(count(ID)/10) into :Data from OverallGPA;
quit;
%PUT &Data;
PROC SQL outobs=&Data.;
Create table &outputtable. as select *
from OverallGPA,OverallCreditHoursEarned
where &less.<OverallCreditHoursEarned<&more.
order by ID
;
quit;
%MEND;
%TopTen(Report3, 60, 130);
/* creates report of number of values in top ten percent */
PROC REPORT data=Report3;
run;
此 Proc 报告当前正在打印具有相同 ID、TotalGPA 但不同的OverallCreditHoursEarned 的列。 有什么想法可以完成这项工作吗?我使用了我认为可行但不适用于宏的 Proc Rank。 Proc Rank代码如下。
PROC RANK data=OverallGPA out=Report3Alt(where=(TopTenPercent<=24))
descending ties=Low;
var TotalGPA;
ranks TopTenPercent;
run;
【问题讨论】:
标签: sas sas-macro proc-sql proc-report