Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2000
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2000

[Date Index] [Thread Index] [Author Index]

Search the Archive

RE: Need to reduce 2 lists so that only {x,y} pairs with same x remain

  • To: mathgroup at smc.vnet.net
  • Subject: [mg24192] RE: [mg24134] Need to reduce 2 lists so that only {x,y} pairs with same x remain
  • From: "David Park" <djmp at earthlink.net>
  • Date: Wed, 28 Jun 2000 22:51:12 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

> -----Original Message-----
> From: materialsscientist at my-deja.com
To: mathgroup at smc.vnet.net
> [mailto:materialsscientist at my-deja.com]
> Hello,
>
> I have 2 lists of data:
>
> for example
> data1={{1,1},{1.5,1.5},{2,2},{3,3},{4,4},{5,5}}
>
> data2={{1,2},{2,3},{3,4},{4,5},{6,7},{7,8}}
>
>
> I want to do a point by point comparision, so I
> need to reduce both data1 and data2 so that
> common x data in the {x,y} pairs for each list
> remain.
>
> Thus the lists should look like this:
>
> data1={{1,1},{2,2},{3,3},{4,4}}
> data2={{1,2},{2,3},{3,4},{4,5}}
>
> What function(s) would to something like this?
>
> Thanks,
>
> Chuck


Chuck,

I hope you get a number of responses to this. Here is a method I worked out.
We build up a list of "outs" by taking the Complement of the first list with
the second list and then vice versa. Then we Map the Complement of the outs
on each of the two lists. We have to specify a SameTest for the Complement
function. We want the sublists to be the same if their first element is the
same. However, I suspect that your data may be more complicated than you
indicate. How closely must the first elements match to keep them? In the
following routine, if they differ by less than delta they are kept.

matchlists[list1_, list2_, delta_] :=
  Module[{outs, lista = Sort[list1], listb = Sort[list2]},
   outs = Join[Complement[lista, listb, SameTest ->
        (Abs[#1[[1]] - #2[[1]]] < delta & )], Complement[listb, lista,
       SameTest -> (Abs[#1[[1]] - #2[[1]]] < delta & )]];
    (Complement[#1, outs] & ) /@ {lista, listb}]

data1 = {{1, 1}, {1.5, 1.5}, {2, 2}, {3, 3}, {4, 4}, {5, 5}};
data2 = {{1, 2}, {2, 3}, {3, 4}, {4, 5}, {6, 7}, {7, 8}};

matchlists[data1, data2, 0.001]
{{{1, 1}, {2, 2}, {3, 3}, {4, 4}}, {{1, 2}, {2, 3}, {3, 4}, {4, 5}}}

data1 = {{1.11135, 1}, {1.5, 1.5}, {2.2255, 2}, {3, 3}, {4, 4}, {5, 5}};
data2 = {{1.11105, 2}, {2.2333, 3}, {3, 4}, {4, 5}, {6, 7}, {7, 8}};

matchlists[data1, data2, 0.001]
{{{1.11135, 1}, {3, 3}, {4, 4}}, {{1.11105, 2}, {3, 4}, {4, 5}}}

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/



  • Prev by Date: Re: Need to reduce 2 lists so that only {x,y} pairs with same x remain
  • Next by Date: Re: "misbehaving" Union function
  • Previous by thread: Re: Need to reduce 2 lists so that only {x,y} pairs with same x remain
  • Next by thread: AIX 4.3 Mathematica MathKernel Out of Memory