Not applicable

Func (IML) to return the row and col position of element in m x n matrix?

I want to know if there is any SAS/IML function which returns the row and column location of an element with a M x N or N x N Matrix.

For example, I want to know the location of the smallest element in the matrix A. I can find the element using

>>a=loc(min(A));

This returns the elements value, but not the position within the matrix.

Even when I try

>>b=ncol(min(A));
>>c=nrow(min(A));

SAS/IML only return column=1 row=1, since it still recognizes the elements as a value, separate from the Matrix.

1 ACCEPTED SOLUTION

Accepted Solutions
SAS Super FREQ

Re: Func (IML) to return the row and col position of element in m x n matrix?

Put the condition that you are searching for inside the LOC statement, as in
idx = loc( A = min(A) ); /* indices where A equals min(A) */
or, in general,
idx = loc( A = value ); /* indices where A equals 'value' */

The previous statements return ALL indices that satisfy the condition.
It turns out that for "index of minimum" and "index of maximum" there is a subscript reduction operator that returns the FIRST index that satisfies the condition. See
http://support.sas.com/documentation/cdl/en/imlug/59656/HTML/default/workmatrix_sect14.htm
SAS Super FREQ

Re: Func (IML) to return the row and col position of element in m x n matrix?

Put the condition that you are searching for inside the LOC statement, as in
idx = loc( A = min(A) ); /* indices where A equals min(A) */
or, in general,
idx = loc( A = value ); /* indices where A equals 'value' */

The previous statements return ALL indices that satisfy the condition.
It turns out that for "index of minimum" and "index of maximum" there is a subscript reduction operator that returns the FIRST index that satisfies the condition. See
http://support.sas.com/documentation/cdl/en/imlug/59656/HTML/default/workmatrix_sect14.htm
From The DO Loop