[R] counting row repetitions without loop
Doran, Harold
HDoran at air.org
Wed Feb 6 15:55:52 CET 2008
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.
>
More information about the R-help
mailing list