Hope you are looking for a Data Step Solution. Here is a 3 by 5 matrix but it can be adapted to any dimensions by changing the sizes of the arrays in one place and body of the program needs no change.
data have;
input X1 - X5;
datalines;
10 12 15 10 13
20 22 15 30 23
21 30 25 18 46
;
run;
/* you compute the Mean */
data _null_;
array k[3,5] _temporary_;
array m[3] _temporary_;
do i = 1 by 1 until(eof);
set have end = eof;
array v X1 - X5;
do j = 1 to dim2(k);
k[i,j] = v[j];
end;
end;
if eof then do;
do i = 1 to dim1(k);
do j = 1 to dim2(k);
m[i] + k[i,j];
end;
m[i] = m[i] / dim2(k);
end;
do i = 1 to dim1(k);
do j = 1 to dim2(k);
k[i,j] = k[i,j] - m[i];
end;
do j = 1 to dim2(k);
put k[i,j] = ;
end;
end;
end;
run;
/* you use the SAS function to get Mean */
data _null_;
array k[3,5] _temporary_;
array m[3] _temporary_;
do i = 1 by 1 until(eof);
set have end = eof;
array v X1 - X5;
mean = mean(of v[*]);
put mean =;
do j = 1 to dim2(k);
k[i,j] = v[j] - mean;
end;
end;
if eof then do;
do i = 1 to dim1(k);
do j = 1 to dim2(k);
put k[i,j] =;
end;
end;
end;
run;
... View more