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: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Waterman, > DG (David) > Sent: Wednesday, February 06, 2008 9:08 AM > To: r-help@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@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@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.