不太懂iml语句,如果a在矩阵模块里是个矩阵的话,我用宏把它每个都导了出来,然后set到了一起
data a;
input a;
run;
%macro a;
proc iml;
use X1;
read all;
new_ac=J(500,1,0);
new_d_ar=J(500,1,0);
near=J(500,3,10000);
%do i=1 %to 500;
new_ac[i,1]=ac[i,1];
new_d_ar[i,1]=d_ar[i,1];
diffni=abs(ni-ni[i,1]);
diffni[i,1]=100;
if revman[i,1]=1 | exman[i,1]=1 then do;
inds=indust[i,1];
ye=year[i,1];
do k=1 to 500;
if indust[k,1]=inds & year[k,1]=ye then near[k,1]=diffni[k,1];
if indust[k,1]=inds & year[k,1]=ye then near[k,2]=ac[k,1];
if indust[k,1]=inds & year[k,1]=ye then near[k,3]=d_ar[k,1];
end;
a=near[>:<,1];
create a_&i from a[colname=a];
append from a;
close a;
new_ac[i,1]=near[a,2];
new_d_ar[i,1]=near[a,3];
end;
%end;
result=new_ac || new_d_ar;
Create new from result[colname={new_ac new_d_ar}];
Append from result;
Close new;
quit;
%do i=1 %to 500;
data a;
set a a_&i;
run;
%end;
%mend;
%a;