Contributor
Posts: 20

# Matrix diagonal manipulation

Hi Guys,

I have two tables as shown in the attachment. I want to create the result table, which is shown at the bottom of the attachment:

• For the diagonal columns in table 1, i want to populate the values from table 2
• Challenge is in table 2 i got a product name column which got a value "A" as i appended it to a table.

Can someone give me a hand please? I really appreciate everyone who have been helping me so far.

Regular Contributor
Posts: 168

## Re: Matrix diagonal manipulation

Posted in reply to akpattnaik

Is the DIAG function what you are looking for?   It will convert any vector into a diagonal matrix.  For example

``````proc iml;
a = diag({1 2 3});
print a;
quit;``````
Contributor
Posts: 20

## Re: Matrix diagonal manipulation

Posted in reply to IanWakeling

Thanks for your reply. But i believe its something more to that. Can you please have a look at the data which is attached?

i want the values from a different table to be replaced with the diagonals. Appreciate your input and time.

Regular Contributor
Posts: 168

## Re: Matrix diagonal manipulation

Posted in reply to akpattnaik

I am not understanding what you want,  so can you explain in more detail please?   How do you want to make Table 2 from Table 1?   The step after that is just the DIAG function, as the 2nd "22" in the result matrix is a typo,  right?

Contributor
Posts: 20

## Re: Matrix diagonal manipulation

Posted in reply to IanWakeling

Ah, Sorry Ian. My bad. You are right.

I guess i'm not able to think straight now :-)

Diag is the option.  i was wandering how to put that in the shape of table 1.

proc iml;

N=nrow(table1);

test= diag(table2);

result=??

run;

Discussion stats
• 4 replies
• 159 views
• 0 likes
• 2 in conversation