Dear R experts, I would really appreciate if you had an idea on how to use more efficiently the aggregate method:
More specifically, I would like to calculate the mean of certain values on a data frame, grouped by various attributes, and then create a new column in the data frame that will have the corresponding mean for every row. I attach part of my code: matchMean <- function(ind,dataTable,aggrTable) { index <- which((aggrTable[,1]==dataTable[["Attr1"]][ind]) & (aggrTable[,2]==dataTable[["Attr2"]][ind])) as.numeric(aggrTable[index,3]) } avgDur <- aggregate(ap.dat[["Dur"]], by = list(ap.dat[["Attr1"]], ap.dat[["Attr2"]]), FUN="mean") meanDur <- sapply((1:length(ap.dat[,1])), FUN=matchMean, ap.dat, avgDur) ap.dat <- cbind (ap.dat, meanDur) As I deal with very large dataset, it takes long time to run my matching function, so if you had an idea on how to automate more this matching process I would be really grateful. Thank you very much in advance! Kind regards, Stella -- Stella Pachidi Master in Business Informatics student Utrecht University ______________________________________________ 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.