The first and second column are actually indices of another matrix (my example may make this not sufficiently clear). I want to compare the sum with that corresponding entry, and then record the result of that.
Any idea? Best, Ralph ---------------------------------------- > Date: Sun, 20 Jul 2008 16:50:41 -0700 > From: [EMAIL PROTECTED] > To: [EMAIL PROTECTED] > Subject: Re: [R] Sum efficiently from large matrix according to re-occuring > levels of factor? > CC: r-help@r-project.org > > On Sun, Jul 20, 2008 at 4:47 PM, hadley wickham wrote: >> On Sun, Jul 20, 2008 at 4:16 PM, Ralph S. wrote: >>> >>> Hi, >>> >>> I am trying to calculate the sum for each occurrence of the level of a >>> factor in a very large matrix. In addition, I want to save that sum >>> together with the information of the level of the factor and the level of a >>> second factor. >>> >>> My matrix looks like this: >>> >>> x<-matrix(c(1,1,1,2,2,3,3,1,1,7,7,7,4,4,2,2,7,7,1,1,1,1,1,1,2,5,5),9,3) >>> >>> I want to sum according to the levels in the first column and save the sum >>> with the information of the level in the first and the second column in a >>> new matrix. >>> >>> That is, I want output in the matrix of form: >>> >>> 1 7 3 >>> 2 4 2 >>> 3 2 3 >>> 1 7 10 >>> >> >> Why that and not: >> >> 1 7 13 >> 2 4 2 >> 3 2 3 >> >> ? > > Here's a solution for that case: > > index <- x[, 2] + x[, 1] * max(x[, 2]) > cbind(x[!duplicated(index), 1:2], tapply(x[, 3], index, sum)) > > It takes about half a second for a million row matrix. > > Hadley > > > > -- > http://had.co.nz/ _________________________________________________________________ With Windows Live for mobile, your contacts travel with you. 072008 ______________________________________________ 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.