Re:Matrix manipulation
- To: mathgroup at smc.vnet.net
- Subject: [mg17038] Re:[mg16956] Matrix manipulation
- From: "Tomas Garza" <tgarza at mail.internet.com.mx>
- Date: Wed, 14 Apr 1999 02:11:53 -0400
- Sender: owner-wri-mathgroup at wolfram.com
Martin [maa.150 at rsk.dk] wrote: > question : I have 2 matrices with 2 coulomns each. > The first have 57 rows and the other 200 rows. > The first coulomn in each matrix contains ID numbers and I > would like to compare the two matrices and make a new matrix > containing the ID number and the numbers in the second row , so > the new matrix will be with 3 coulomns and 57 rows. > how to do that ? Hello, Martin: A straightforward approach would be as follows: if a1 and a2 are your two matrices, then In[1]:= DeleteCases[ Join[a1,a2]//.{x___,{y_,z_},w___,{y_,v_},t___}->{x,{y,z,v},w,t},{p_, q_}] I.e., take all pairs where the first component is the same and put the two second components together, and then delete those which didn't find a match. However, for matrices of 57 and 200 rows, respectively, and depending on the degree of coincidence of ID numbers (i.e., first component) the amount of computing time could be inordinately large (as much as 30 seconds in a fast machine). Still, if you are not in a hurry then the above method works fine. But if the number of columns in your matrices increase, the time consumed grows enormously and an alternative approach would be advisable. Good luck, Tomas Garza Mexico City