[R] counting row repetitions without loop

Doran, Harold HDoran at air.org
Wed Feb 6 16:02:47 CET 2008


Sorry, word wrap made that incomprehensible, I think

x  y
4  5
6  7
6  6
7  5
5  7
6  7
4  5
6  7
7  6
5  6
dat <- read.table('clipboard', header=TRUE)

dat$patt <- paste(dat$x,dat$y, sep='')

mm <- as.data.frame(with(dat, table(patt)))

dat <- merge(dat, mm, by='patt')

mat <- matrix(0, ncol=10, nrow=10)

gg <- matrix(c(dat$x, dat$y), ncol=2)

mat[gg] <- dat$Freq 

> -----Original Message-----
> From: r-help-bounces at r-project.org 
> [mailto:r-help-bounces at r-project.org] On Behalf Of Doran, Harold
> Sent: Wednesday, February 06, 2008 9:56 AM
> To: Waterman, DG (David); r-help at r-project.org
> Subject: Re: [R] counting row repetitions without loop
> 
> I think this does what you want, but there may be a more efficient way
> 
> x  y
> 4  5
> 6  7
> 6  6
> 7  5
> 5  7
> 6  7
> 4  5
> 6  7
> 7  6
> 5  6
> dat <- read.table('clipboard', header=TRUE) # copy sample 
> data above dat$patt <- paste(dat$x,dat$y, sep='') mm <- 
> as.data.frame(with(dat, table(patt))) dat <- merge(dat, mm, 
> by='patt') mat <- matrix(0, ncol=10, nrow=10) gg <- 
> matrix(c(dat$x, dat$y), ncol=2) mat[gg] <- dat$Freq 
> 
> > -----Original Message-----
> > From: r-help-bounces at r-project.org
> > [mailto:r-help-bounces at r-project.org] On Behalf Of Waterman, DG 
> > (David)
> > Sent: Wednesday, February 06, 2008 9:08 AM
> > To: r-help at r-project.org
> > Subject: [R] counting row repetitions without loop
> > 
> > Hi,
> >  
> > I have a data frame consisting of coordinates on a 10*10 grid, i.e.
> >  
> > > example
> >     x  y
> > 1   4  5
> > 2   6  7
> > 3   6  6
> > 4   7  5
> > 5   5  7
> > 6   6  7
> > 7   4  5
> > 8   6  7
> > 9   7  6
> > 10  5  6
> > 
> > What I would like to do is return an 10*10 matrix 
> consisting of counts 
> > at each position, so in the above example I would have a 
> matrix where, 
> > for example, cell [4,5] contains 2 and [6,7] contains 3. At 
> the moment 
> > I have implemented this using a for loop over the rows of the data 
> > frame, however the data frames I want to process are very 
> long so the 
> > loop takes many minutes to complete. Can I do this in a 
> more efficient 
> > way?
> >  
> > Cheers,
> > David
> > <DIV><FONT size="1" color="gray">This e-mail and any 
> attachments may 
> > contain confidential, copyright and or privileged material, and are 
> > for the use of the intended addressee only. If you are not the 
> > intended addressee or an authorised recipient of the 
> addressee please 
> > notify us of receipt by returning the e-mail and do not use, copy, 
> > retain, distribute or disclose the information in or 
> attached to the 
> > e-mail.
> > Any opinions expressed within this e-mail are those of the 
> individual 
> > and not necessarily of Diamond Light Source Ltd.
> > Diamond Light Source Ltd. cannot guarantee that this e-mail or any 
> > attachments are free from viruses and we cannot accept 
> liability for 
> > any damage which you may sustain as a result of software 
> viruses which 
> > may be transmitted in or with the message.
> > Diamond Light Source Limited (company no. 4375679). 
> > Registered in England and Wales with its registered office 
> at Diamond 
> > House, Harwell Science and Innovation Campus, Didcot, Oxfordshire, 
> > OX11 0DE, United Kingdom </FONT></DIV>
> > 
> > ______________________________________________
> > 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.
> > 
> 
> ______________________________________________
> 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.
> 



More information about the R-help mailing list