Try something like this: # Initial data frame > DF V1 V2 V3 V4 1 A 1.0 200 ID1 2 A 3.0 800 ID1 3 A 2.0 200 ID1 4 B 0.5 20 ID2 5 B 0.9 50 ID2 6 C 5.0 70 ID1
# Now do the aggregation to get the means DF.1 <- aggregate(DF[, 2:3], list(V1 = DF$V1), mean) > DF.1 V1 V2 V3 1 A 2.0 400 2 B 0.7 35 3 C 5.0 70 # Now get the unique combinations of letters and IDs in DF DF.U <- unique(DF[, c("V1", "V4")]) > DF.U V1 V4 1 A ID1 4 B ID2 6 C ID1 # Now merge the two data frames together, matching the letters DF.NEW <- merge(DF.1, DF.U, by = "V1") > DF.NEW V1 V2 V3 V4 1 A 2.0 400 ID1 2 B 0.7 35 ID2 3 C 5.0 70 ID1 See ?unique and ?merge for more information. Also, for the sake of clarification, these are not matrices, but data frames. A matrix may contain only one data type, whereas data frames are specifically designed to contain multiple data types as you have here. HTH, Marc Schwartz On Wed, 2006-09-13 at 17:38 +0100, Emmanuel Levy wrote: > Thanks for pointing me out "aggregate", that works fine! > > There is one complication though: I have mixed types (numerical and > character), > > So the matrix is of the form: > > A 1.0 200 ID1 > A 3.0 800 ID1 > A 2.0 200 ID1 > B 0.5 20 ID2 > B 0.9 50 ID2 > C 5.0 70 ID1 > > One letter always has the same ID but one ID can be shared by many > letters (like ID1) > > I just want to keep track of the ID, and get a matrix like: > > A 2.0 400 ID1 > B 0.7 35 ID2 > C 5.0 70 ID1 > > Any idea on how to do that without a loop? > > Many thanks, > > Emmanuel > > On 9/12/06, Emmanuel Levy <[EMAIL PROTECTED]> wrote: > > Hello, > > > > I'd like to group the lines of a matrix so that: > > A 1.0 200 > > A 3.0 800 > > A 2.0 200 > > B 0.5 20 > > B 0.9 50 > > C 5.0 70 > > > > Would give: > > A 2.0 400 > > B 0.7 35 > > C 5.0 70 > > > > So all lines corresponding to a letter (level), become a single line > > where all the values of each column are averaged. > > > > I've done that with a loop but it doesn't sound right (it is very > > slow). I imagine there is a > > sort of "apply" shortcut but I can't figure it out. > > > > Please note that it is not exactly a matrix I'm using, the function > > "typeof" tells me it's a list, however I access to it like it was a > > matrix. > > > > Could someone help me with the right function to use, a help topic or > > a piece of code? > > > > Thanks, > > > > Emmanuel > > ______________________________________________ R-help@stat.math.ethz.ch 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.