[R] select unique by multiple values

arun smartpink111 at yahoo.com
Wed Oct 9 20:24:45 CEST 2013


Hi,
May be this is what you are looking for.

indx<- xyz[[1]]==xyz[[2]]
indx1<- which(indx)[duplicated(xyz[[1]][indx])]

lapply(xyz,function(u) u[-indx1])
$x
[1] 8 6 9 0 0 3 9 7 1

$y
[1] 1 2 9 5 1 2 0 9 2

$z
[1] 5 6 9 0 5 1 1 7 3

 lapply(xyz, function(u) u[indx1])
$x
[1] 9

$y
[1] 9

$z
[1] 4
A.K.


________________________________
From: Ronald Peterson <ron at hub.yellowbank.com>
To: arun <smartpink111 at yahoo.com> 
Cc: R help <r-help at r-project.org> 
Sent: Wednesday, October 9, 2013 1:52 PM
Subject: Re: [R] select unique by multiple values



Thanks.  That's not quite what I'm looking for, but it's good see different ways to slice and dice data.

In my example, the one duplicated x,y pair would 9,9, so I would want to reduce the original list to

> xyz
$x
 [1] 8 6 9 0 0 3 9 7 1
$y

 [1] 1 2 9 5 1 2 0 9 2
$z

 [1] 5 6 9 0 5 1 1 7 3

and if it were also possible to get the xyz values that were removed that would be perfect.  e.g.

$x
[1] 9
$y
[1] 9
$z
[1] 4

Does that make sense?

(my data is in a form accepted by the deldir package, fwiw)

Best,

R.




On Wed, Oct 9, 2013 at 9:56 AM, arun <smartpink111 at yahoo.com> wrote:


>
>Hi,
>
>Not sure about your expected output.
>
>xyz<- list(x=c(8,6,9,0,0,3,9,7,1,9),y=c(1,2,9,5,1,2,0,9,2,9),z=c(5,6,9,0,5,1,1,7,3,4))
>indx<-sort(unique(unlist(lapply(xyz[1:2],function(u) which(!duplicated(u))),use.names=FALSE)))
> xyz[1:2]<-lapply(xyz[1:2],function(u) u[!duplicated(u)])
> xyz[3]$z<- xyz[3]$z[indx]
> xyz
>#$x
>#[1] 8 6 9 0 3 7 1
>#
>#$y
>#[1] 1 2 9 5 0
>#
>#$z
>#[1] 5 6 9 0 1 1 7 3
>
>A.K.
>
>
>
>New to R here.  Lots of fun.  Still rather green though.
>
>I'd like to select unique items from a list that looks like this (for
>example):
>
>> xyz
>$x
> [1] 8 6 9 0 0 3 9 7 1 9
>$y
> [1] 1 2 9 5 1 2 0 9 2 9
>$z
> [1] 5 6 9 0 5 1 1 7 3 4
>
>I'd like to select unique (x,y), while preserving association with z
>values.  When there are duplicate (x,y) pairs, it doesn't really matter
>which (x,y,z) triplet gets preserved - selecting the first would be fine,
>but any other way to do it would be fine also.  It /would/ be handy to also
>get a list of the rejected triplets, if that's possible.  Ideas?
>
>Thanks!
>
>R
>
>______________________________________________
>R-help at r-project.org mailing list
>https://stat.ethz.ch/mailman/listinfo/r-help
>PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
>and provide commented, minimal, self-contained, reproducible code.
>


-- 
-Ron-



More information about the R-help mailing list