我正在尝试使用宏程序来制作按总 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;