On Nov 22, 2013, at 1:43 PM, john d wrote: > Dear all, > > I apologize for the newbie question, but I'm stuck. > > I have a data frame in the following form: > > dat<-as.data.frame(cbind(c("a","a","a","b","b"), c(1,2,3,3,2),c(4,3,5,4,4))) > > I need a way to generate a new dataframe with the average for each factor. > The result should look like:
Well, using the data,frame(cbind(...)) will ensure that you will NOT get factors, since cbind creates a matrix and that structure will not hold factors. > > res<-as.data.frame(cbind(c("a","b"), c(2,2.5),c(4,4))) Ouch. Look at ?tapply or ?aggregate. Perhaps: dat<-data.frame(facts= c("a","a","a","b","b"), nums1=c(1,2,3,3,2),nums2=c(4,3,5,4,4)) aggregate(dat[-1], dat[1], mean) > Any help would be greatly appreciated. > > Jonathan > > [[alternative HTML version deleted]] Newbie or not, you should still read the Posting Guide. > > PLEASE do read the posting guide http://www.R-project.org/posting-guide.html -- David Winsemius Alameda, CA, USA ______________________________________________ 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.