On Sat, 2005-11-05 at 11:44 -0600, Marc Schwartz wrote: > On Sat, 2005-11-05 at 18:04 +0100, Claus Atzenbeck wrote: > > Hi, > > > > I have a data frame named "questions" that I use to get a subset and > > then a table: > > > > failcondonly <- subset(questions, errorreason=="condition") > > failcondtab <- table(failcondonly$type, failcondonly$qid, exclude=c("ORGA", > > "skipped")) > > > > The failcondtab looks like this: > > > > 6 11 12 13 14 15 17 26 30 31 39 41 > > gave up 0 1 1 1 1 0 0 0 0 8 0 2 > > wrong 3 3 7 3 3 1 4 1 3 4 1 2 > > > > I want to sort this table according to the *sum* of the values in "gave > > up" and "wrong" in reverse order. The highest value should be first. > > First would be column "31" (value 8+4=12), then column "12" (value > > 1+7=8), etc. > > > > sort(failcondtab) does not help, since it sorts the column names, not > > the sum of the values of each column. > > > > Thanks for any hint. > > Claus > > > Something like the following should work: > > > failcondtab[, rev(order(colSums(failcondtab)))] > 31 12 41 17 14 13 11 30 6 39 26 15 > gave up 8 1 2 0 1 1 1 0 0 0 0 0 > wrong 4 7 2 4 3 3 3 3 3 1 1 1 > > > See ?order, ?rev and ?colSums.
Or another, better variation, would be: > failcondtab[, order(colSums(failcondtab), decreasing = TRUE)] 31 12 11 13 14 17 41 6 30 15 26 39 gave up 8 1 1 1 1 0 2 0 0 0 0 0 wrong 4 7 3 3 3 4 2 3 3 1 1 1 which removes the requirement to use rev(). Marc ______________________________________________ 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