[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