Joining List of Lists
- To: mathgroup at smc.vnet.net
- Subject: [mg64360] Joining List of Lists
- From: Benedetto Bongiorno <bbongiorno at attglobal.net>
- Date: Tue, 14 Feb 2006 01:31:35 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
To All, In the folowing routine, I am trying to combine two tables of lists of lists, that are not of equal size, by the intersection index of a common column of both tables. The routine works but it runs for hours. The bottleneck is the join routine using For. How can I use Map or MapThread to speed up the process? Thank you. Ben Bongiorno "Create Index" "Create an Index of equivalents" Dimensions[idx] {175371,4} Dimensions[data] {314791,13} aa = idx[[All,loc02[[1]]]]; bb = data[[All,loc01[[5]]]]; indx = Intersection[aa,bb]; Dimensions[indx] {16267} "Select the rows with matching field" ans01 = Select[idx, MemberQ[indx, #[[loc02[[1]]]]]&]; ans02 = Select[data, MemberQ[indx,#[[loc01[[5]]]]]&]; Dimensions[ans01] {16267,4} Dimensions[ans02] {314791,13} "Join " descripData={}; n=Length[ans02]+1; For[i=1,i<n,i++, nn=Length[ans01]+1; For[j=1,j<nn,j++, If[ans02[[i,loc01[[5]]]]==ans01[[j,loc02[[1]]]], AppendTo[descripData,RowJoin[{ans02[[i]]},{ans01[[j]]}]]]]]; Dimensions[descripData] {314791,1,17} descripData=Flatten[descripData,1]; Dimensions[descripData] {314791,17}
- Follow-Ups:
- Re: Joining List of Lists
- From: János <janos.lobb@yale.edu>
- Re: Joining List of Lists