SAS中文论坛

标题: 怎么把sum值放到同一个数据集中? [打印本页]

作者: shiyiming    时间: 2003-10-31 22:19
标题: 怎么把sum值放到同一个数据集中?
%macro prob;
%do j=1 %to 10;

data  aa (drop=i);
do i=1 to 47;
a=ranuni(0);
b=ranuni(0);
output;
end;

proc rank data=aa   out=aa;
   var a;
   ranks
         x
         ;
proc rank data=aa   out=aa;
   var b;
   ranks
         y
         ;
run;

data aa;
set aa;
if x>37 then  xx=1;
    else if x<11 then xx=-1;
    else xx=0;
if y>37 then  yy=1;
    else if y<11 then yy=-1;
    else yy=0;
z=xx*yy;

proc means data=aa sum;
var z;
run;


%end;
%mend prob;

%prob;

对于如上程序的结果,即10个z的sum,怎么把10个z的sum放到同一个数据集中呢,作为z-sum变量的10个观测?
先谢谢各位了!!
对于提高程序效率的改动更是欢迎!
作者: shiyiming    时间: 2003-11-1 09:48
不用宏好像更易于处理,不知是否达到你的要求?

data aa (drop=i);
do k=1 to 10;
do i=1 to 47;
a=ranuni(0);
b=ranuni(0);
output;
end;
end;
run;

proc rank data=aa out=aa;
by k;var a; ranks x ;
proc rank data=aa out=aa;
by k;var b; ranks y ;
run;


data aa;
set aa;
if x>37 then xx=1;
else if x<11 then xx=-1;
else xx=0;
if y>37 then yy=1;
else if y<11 then yy=-1;
else yy=0;
z=xx*yy;

proc means data=aa noprint;
by k;
var z;
output out=cc(keep=z rename=(z=z_sum)) sum=;
run;
作者: shiyiming    时间: 2003-11-1 12:20
谢谢老兄了
真是高手啊
万分感谢!!!
我现在就是编程能力太差了
很多自己的想法都实现不
所幸的是论坛上有那么多的热心人
感动.................




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2