🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Calcite | Level 5

## Extract upper triangular elements using SAS IML

Hi All,

I am trying extract upper triangular elements using SAS/IML, I am getting the result incorrectly.

proc iml;
corr = {0 -26 44 34 -85
26 0 65 -56 43
-44 -65 0 21 7
-34 56 -21 0 21
85 -43 -7 -21 0};
r = row(corr);
c = col(corr);
upperTri = loc(r < c);
v = corr[upperTri];
print v;

Desired output :

-26

44

34

-85

65

-56

43

21

7

21

But I am getting output as :

 -26 44 34 -85 26 0 65 -56 43 -44 -65 0 21 7 -34 56 -21 0 21 85 -43 -7 -21 0

1 ACCEPTED SOLUTION

Accepted Solutions
Diamond | Level 26

## Re: Extract upper triangular elements using SAS IML

I think this identifies the problem

``````proc iml;
corr = {0 -26 44 34 -85
26 0 65 -56 43
-44 -65 0 21 7
-34 56 -21 0 21
85 -43 -7 -21 0};
print corr;show corr;``````
--
Paige Miller
4 REPLIES 4
Diamond | Level 26

## Re: Extract upper triangular elements using SAS IML

I think this identifies the problem

``````proc iml;
corr = {0 -26 44 34 -85
26 0 65 -56 43
-44 -65 0 21 7
-34 56 -21 0 21
85 -43 -7 -21 0};
print corr;show corr;``````
--
Paige Miller
Lapis Lazuli | Level 10

## Re: Extract upper triangular elements using SAS IML

@Deva_123I just reshaped it into a square matrix (5x5) and got the output as below.

Output

The code is as below.

``````proc iml;
corr = {0 -26 44 34 -85
26 0 65 -56 43
-44 -65 0 21 7
-34 56 -21 0 21
85 -43 -7 -21 0};
corr = shape(corr,5);
r = row(corr);
c = col(corr);
upperTri = loc(r < c);
v = corr[upperTri];
print v;
run;``````

Best wishes

Super User

## Re: Extract upper triangular elements using SAS IML

Paige is right. You missed comma ',' .

And why not post it at IML forum ?

``````
proc iml;
corr = {0 -26 44 34 -85 ,
26 0 65 -56 43 ,
-44 -65 0 21 7 ,
-34 56 -21 0 21 ,
85 -43 -7 -21 0};
r = row(corr);
c = col(corr);
upperTri = loc(r < c);
v = corr[upperTri];
print v;

quit;``````

OUTPUT:

```v
-26
44
34
-85
65
-56
43
21
7
21```
Calcite | Level 5

## Re: Extract upper triangular elements using SAS IML

Thanks a lot for your quick reply! This is working perfectly!

From SAS Users blog
Want more? Visit our blog for more articles like these.
Discussion stats
• 4 replies
• 1158 views
• 2 likes
• 4 in conversation