我想求出r1的正负号分界点的那个负观测的obs值,以及r2正负值交界的那个负观测的 obs值
再比较之间的大小 ,再以小的obs为界,比较在这个obs前的r1/r2的最大值与这个obs后面r1/r2的最小值的大小
我的程序是这样的
但运用max与min函数得不到值
请那位告诉我下
谢谢
我的qq 396424213
邮箱 <!-- e --><a href="mailto:mlsh163@163.com">mlsh163@163.com</a><!-- e -->
data a;
ratio=r1/r2;
if ( r1>0 and lag(r1)<0) then do ;
a=obs-1;
if a=. then delete;
s=a;
put 's='s;
end;
if ( r2>0 and lag(r2)<0) then do;
b=obs-1;
if b=. then delete;
t=b;
put 'b=' b;
end;
if s>t then goto ok;
else if s<=t then do obs=1 to s;
m=MAX ratio;
end;
do obs=s to last.obs;n=min ratio;
end;
if n>=m then put 'r1 dominate r2';
else put 'r1 donot dominate r2';
ok:put 'r1 donot dominate r2';
run;
data test;
input obs r1 r2;
cards;
1 -0.01 -0.02
2 -0.008 -0.012
3 -0.003 -0.008
4 0.01 -0.007
5 0.1 0.2
;
run;
data test1;
set test;
where r1<0 and r2<0;
r=r1/r2;
run;
/*````````````proc means; can provide min and max info```````````*/
proc sort data=test1;
by r;
run;
data test2;
set test1 nobs=n;
if _n_=1 then max=r;
if _n_=n then min=r;
run;
不知道是不是要这个```````不是特别理解楼组的意思`````
data work.a;
input r1 r2;
cards;
-0.01 -0.02
-0.008 -0.012
-0.005 -0.007
0.001 -0.001
0.003 0.0001
0.004 0.02
;
run;
data work.b;
set work.a ;
obs=_n_;
run;
proc sql noprint;
select obs into :b from work.b where
r1>=0 ;
select obs into :a from work.b where
r2>=0;
quit;
data work.h;
a=&a;
b=&b;
run;
proc sql noprint;
select min(a,b) into:c from work.h;
%put &c;
quit;
data work.i;
set work.b;
if obs<=&c then
ratio1=r1/r2;
else
ratio2=r1/r2;
run;
proc sql noprint;
create table work.k as
select max(max(ratio1),max(ratio2)) as maxratio from work.i;
quit;