On 27-04-2014, at 11:01, Berend Hasselman <b...@xs4all.nl> wrote: > > On 27-04-2014, at 02:37, Nico Met <nicome...@gmail.com> wrote: > >> Dear all, >> >> I have a matrix (dimension, 16 x 12) where 2nd column represents class >> (1,1,1,1,1,2,2,2, etc) information. I want to estimate average and median >> values for each of the class and add this information as a row at end of >> the each classes. >> …... >> >> And same will be for other classes. > > …… > For each “class” (group would ba better name) you must append something > different e.g. the “class”-number. > > Try this: > > library(plyr) > g <- function(dat) { > avg <- as.data.frame(aggregate(dat[,2:dim(dat)[2]], dat["class"], > function(x) mean(x,na.rm=T)) ) > med <- as.data.frame(aggregate(dat[,2:dim(dat)[2]], dat["class"], > function(x) median(x,na.rm=T)) ) > z <- rbind(dat,avg,med) > z > } > DAT1 <- ddply(dat,.(class),.fun=g) > rownames(DAT1) <- do.call(c,lapply(split(dat,dat["class"]), > FUN=function(x) > c(rownames(x),paste0("Avg",x[,"class"][1]),paste0("Med",x[,"class"][1])))) > DAT1 > > Convoluted but it works. Maybe someone else can come up with something > shorter and more elegant.
Or something like this if you don’t want to use package plyr g <- function(dat) { avg <- as.data.frame(aggregate(dat[,2:dim(dat)[2]], dat["class"], function(x) mean(x,na.rm=T)) ) med <- as.data.frame(aggregate(dat[,2:dim(dat)[2]], dat["class"], function(x) median(x,na.rm=T)) ) z <- rbind(dat,avg,med) rownames(z) <- c(rownames(dat),paste0("Avg",dat[,"class"][1]),paste0("Med",dat[,"class"][1])) print(z) z } D <- lapply(split(dat,dat["class"]),FUN=g) DAT2 <- do.call(rbind, lapply(D, data.frame)) # alternatively # DAT2 <- do.call(rbind, lapply(D,FUN=function(x) x )) rownames(DAT2) <- sub("[0-9]+\\.","",rownames(DAT2)) DAT2 Berend ______________________________________________ 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.