Thanks again, Dennis and Petr! The solution using the plyr package was perfect:
ddply(data, .(id, mod1), summarize, es = mean(es), mod2 = head(mod2, 1)) Take care, AC On Thu, Jan 28, 2010 at 11:26 PM, Petr PIKAL <petr.pi...@precheza.cz> wrote: > Hi > > r-help-boun...@r-project.org napsal dne 28.01.2010 17:40:01: > > > Thank you, Dennis and Petr. > > > > One more question: when aggregating to one es per id, how would I go > about > > keeping the other variables in the data.frame (e.g., keeping the value > for > > the first row of the other variables, such as mod2) e.g.: > > > > # Dennis provided this example (notice how mod2 is removed from the > output): > > > > > with(x, aggregate(list(es = es), by = list(id = id, mod1 = mod1), > mean)) > > id mod1 es > > 1 3 1 0.20 > > 2 1 2 0.30 > > 3 2 4 0.15 > > > > # How can I get this output (taking the first row of the other variable > in > > the data.frame): > > If I remember it correctly in my suggestion I used something like > > aggregate(x[,-columns.mod1 and mod2], by = x[, columns.mod1 and mod2, > mean) > > Which shall use mod2 as aggregating variable. > > Does it result in output you wanted? > > Regards > Petr > > > > > > id es mod1 mod2 > > > > 1 .30 2 wai > > 2 .15 4 other > > 3 .20 1 itas > > > > > > Thank you, > > > > AC > > > > > > On Thu, Jan 28, 2010 at 1:29 AM, Petr PIKAL <petr.pi...@precheza.cz> > wrote: > > > > > HI > > > > > > r-help-boun...@r-project.org napsal dne 28.01.2010 04:35:29: > > > > > > > > Hi All, > > > > > > > > > > I'm conducting a meta-analysis and have taken a data.frame with > > > multiple > > > > > rows per > > > > > study (for each effect size) and performed a weighted average of > > > effect > > > > > size for > > > > > each study. This results in a reduced # of rows. I am particularly > > > > > interested in > > > > > simply reducing the additional variables in the data.frame to the > > > first row > > > > > of the > > > > > corresponding id variable. For example: > > > > > > > > > > id<-c(1,2,2,3,3,3) > > > > > es<-c(.3,.1,.3,.1,.2,.3) > > > > > mod1<-c(2,4,4,1,1,1) > > > > > mod2<-c("wai","other","calpas","wai","itas","other") > > > > > data<-as.data.frame(cbind(id,es,mod1,mod2)) > > > > > > Do not use cbind. Its output is a matrix and in this case character > > > matrix. Resulting data frame will consist from factors as you can > check by > > > > > > > > > str(data) > > > > > > data<-data.frame(id=id,es=es,mod1=mod1,mod2=mod2) > > > > > > > > > > > > > > > > data > > > > > > > > > > id es mod1 mod2 > > > > > 1 1 0.3 2 wai > > > > > 2 2 0.1 4 other > > > > > 3 2 0.2 4 calpas > > > > > 4 3 0.1 1 itas > > > > > 5 3 0.2 1 wai > > > > > 6 3 0.3 1 wai > > > > > > > > > > # I would like to reduce the entire data.frame like this: > > > > > > E.g. aggregate > > > > > > aggregate(data[, -(3:4)], data[,3:4], mean) > > > mod1 mod2 id es > > > 1 4 calpas 2 0.3 > > > 2 1 itas 3 0.2 > > > 3 1 other 3 0.3 > > > 4 4 other 2 0.1 > > > 5 1 wai 3 0.1 > > > 6 2 wai 1 0.3 > > > > > > doBy or tapply or ddply from plyr library or .... > > > > > > Regards > > > Petr > > > > > > > > > > > > > id es mod1 mod2 > > > > > > > > > > 1 .30 2 wai > > > > > 2 .15 4 other > > > > > 3 .20 1 itas > > > > > > > > > > # If possible, I would also like the option of this (collapsing on > id > > > and > > > > > mod2): > > > > > > > > > > id es mod1 mod2 > > > > > 1 .30 2 wai > > > > > 2 0.1 4 other > > > > > 2 0.2 4 calpas > > > > > 3 0.1 1 itas > > > > > 3 0.25 1 wai > > > > > > > > > > Any help is much appreciated! > > > > > > > > > > AC Del Re > > > > > > > > > > > > > [[alternative HTML version deleted]] > > > > > > > > ______________________________________________ > > > > 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. > > > > > > > > > > [[alternative HTML version deleted]] > > > > ______________________________________________ > > 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. > > [[alternative HTML version deleted]] ______________________________________________ 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.