Skip to content

Remove specific rows in a matrix/data.frame

9 messages · syrvn, David Winsemius, Vining, Kelly +3 more

#
Hi,


imagine the following matrix/data.frame

Letter Number
a 1
a 1
b 1
b 0
c 0
c 1
d 0
d 0 

If the numbers for two identical letters are also identical then I want to
remove either the first or the
second row of that letter. If for a letter the numbers are 1 and 0 I want to
remove the row with the 0.

That means if the code works I would and up with the following
matrix/data.frame

Letter Number
a 1
b 1
c 1
d 1


Many thanks,
Syrvn


--
View this message in context: http://r.789695.n4.nabble.com/Remove-specific-rows-in-a-matrix-data-frame-tp3902149p3902149.html
Sent from the R help mailing list archive at Nabble.com.
#
On Oct 13, 2011, at 12:42 PM, syrvn wrote:

            
?duplicated
But with no 1's associated with 'd' this does not make sense.
David Winsemius, MD
West Hartford, CT
#
Hi Syrvn,
how about this
dtf<-read.table(textConnection("Letter Number
a 1
a 1
b 1
b 0
c 0
c 1
d 0
d 0"),header=T)
aggregate(Number~Letter,data=dtf,max)

cheers.

Am 13.10.2011 18:42, schrieb syrvn:

  
    
#
Why would you end up with d1 in your output if you don't have a d1 in your original data frame? Are you saying that, when both letters have a zero after them, you want to replace one of them with a 1?



-----Original Message-----
From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-project.org] On Behalf Of syrvn
Sent: Thursday, October 13, 2011 9:43 AM
To: r-help at r-project.org
Subject: [R] Remove specific rows in a matrix/data.frame

Hi,


imagine the following matrix/data.frame

Letter Number
a 1
a 1
b 1
b 0
c 0
c 1
d 0
d 0 

If the numbers for two identical letters are also identical then I want to remove either the first or the second row of that letter. If for a letter the numbers are 1 and 0 I want to remove the row with the 0.

That means if the code works I would and up with the following matrix/data.frame

Letter Number
a 1
b 1
c 1
d 1


Many thanks,
Syrvn


--
View this message in context: http://r.789695.n4.nabble.com/Remove-specific-rows-in-a-matrix-data-frame-tp3902149p3902149.html
Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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.
#
try this:
+ a 1
+ a 1
+ b 1
+ b 0
+ c 0
+ c 1
+ d 0
+ d 0"), as.is = TRUE, header = TRUE)
+     if (all(.pair$Number[1L] == .pair$Number)) return(.pair[1L, ])
+     is1 <- which(.pair$Number == 1)
+     if (length(is1) == 1) return(.pair[is1, ])
+     else return(NULL)
+ }))
Letter Number
a      a      1
b      b      1
c      c      1
d      d      0

        
On Thu, Oct 13, 2011 at 12:42 PM, syrvn <mentor_ at gmx.net> wrote:

  
    
#
Hello again,

	
dtf<-read.table(textConnection("Letter Test Number 
							a b 1 
							a b 1 
							b b 1 
							b b 0 
							c b 0 
							c b 1 
							d b 0 
							d b 0"),header=T) 
aggregate(Number ~ Letter,data=dtf,max)

how can I adjust this solution that the results also includes "Test"?

I tried:

aggregate(Number ~ Letter,data=dtf,max,by=list("Letter", "Test", "Number"))

But it breaks with the following error message:

Error in aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...) : 
  arguments must have same length





--
View this message in context: http://r.789695.n4.nabble.com/Remove-specific-rows-in-a-matrix-data-frame-tp3902149p3902286.html
Sent from the R help mailing list archive at Nabble.com.
#
Hi,
just put it in the formula:

aggregate(Number ~ Letter+Test,data=dtf,max)

cheers

Am 13.10.2011 19:30, schrieb syrvn: