Statistical programming, matrix languages, and more

Matrix diagonal manipulation

Reply
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;

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