It's easiest for us to help if you give us a reproducible example. We don't have your datasets (ap.dat), so we can't run your code below. It's easy to create sample data with the random number generators in R, or use ?dput to give us a sample of your actual data.frame.

I would guess your problem is solved by ?ave though.

Stella Pachidi wrote:
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.

______________________________________________
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.

Reply via email to