Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*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 2004

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

Search the Archive

Re: Eliminate duplicates using Union [] in a

  • To: mathgroup at smc.vnet.net
  • Subject: [mg48184] Re: Eliminate duplicates using Union [] in a
  • From: Torben Winther Graversen <immtwg at nospam.student.dtu.dk>
  • Date: Mon, 17 May 2004 03:21:52 -0400 (EDT)
  • Organization: UNI-C
  • References: <c7nn6h$dl5$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Mark Coleman wrote:
> I know that if one applies the Union command to a list of values, it 
> will return the list with duplicates removed. Can I use the Union 
> command to eliminate duplicate when I have a list of data "records"? 

Hi Mark,

Yes, you can. Use the SameTest option of Union to specify a function 
which returns true if two elements are considered equal and false 
otherwise. In your case, you say you need to compare a pair of fields 
from each record to each other. You might try something like, if say the 
two fields have indexes 2 and 3:

In[15]:= dataset = {{1, 2, 3}, {4, 5, 6}, {3, 2, 3}}; (* First and third 
are "duplicates" *)

In[16]:= MySameTest[a_, b_] := {a[[2]], a[[3]]} === {b[[2]], b[[3]]}

In[17]:= Union[dataset, SameTest -> MySameTest]

Out[17]= {{1, 2, 3}, {4, 5, 6}}

In[18]:= (* or, using a pure function: *)

In[19]:= Union[dataset,
    SameTest -> ({#1[[2]], #1[[3]]} === {#2[[2]], #2[[3]]} &)]

Out[19]= {{1, 2, 3}, {4, 5, 6}}

Hope this helps,

-   Torben


  • Prev by Date: Re: Finding errors in my code?
  • Next by Date: Re: System of DE's
  • Previous by thread: RE: Eliminate duplicates using Union [] in a
  • Next by thread: Uniform design