|
5#

楼主 |
发表于 2006-4-3 13:29:38
|
只看该作者
真的还有富余吗?
为了体现这题目还有富余,我再努了努力.
几点说明
1.english应该是降序,但为了和XIC的结果进行比较,我也就没有加decs,你可以自己加.
2.如果严格的讲的话,XIC老兄的程序在生成测试数据集时保留了nn来做为后面程序使用的一个信息.这个过程有一点点取巧,如果原始数据没有这个变量的话,只有再加一段处理来生成它,后面的程序才能正确执行.不信大家把student数据集中的nn drop掉,看看会发生什么事.
3.最近几个论坛有意思的题目不多.希望大家能多找点有意思的题来玩玩.
[code:c4e97]proc sort data=student; /*用student数据集就可,可drop n nn*/
by grade class english;
run;
%macro var(n);
%do i=1 %to &n;
,sum(english*(group=&i)*score)/sum(english*(group=&i))as m&i
%end;
%mend;
proc sql;
create table temp as /*中间数据集,*/
select grade,class,english,min(ceil((monotonic()-min(monotonic())+1)/(floor(count(*)/10))),10) as group,score
from student
group by grade, class
order by monotonic()
;
create table final as /*final是最后的结果集,等同于xic的结果数据集A*/
select grade,class %var(10)
from temp
group by grade,class
;
quit;[/code:c4e97] |
|