Excellent! I wonder why I haven't seen aggregate before. Thanks! ben
On Tue, Feb 28, 2012 at 4:51 PM, ilai <ke...@math.montana.edu> wrote: > aggregate(val~lvls+nm,data=x,FUN='median') > > > > On Tue, Feb 28, 2012 at 4:43 PM, Ben quant <ccqu...@gmail.com> wrote: > > Hello, > > > > I can get the median for each factor, but I'd like another column to go > > with each factor. The nm column is a long name for the lvls column. So > > unique work except for the order can get messed up. > > > > Example: > > x = > > > data.frame(val=1:10,lvls=c('cat2',rep("cat1",4),rep("cat2",4),'cat1'),nm=c('longname2',rep("longname1",4),rep("longname2",4),'longname1')) > > x > > val lvls nm > > 1 1 cat2 longname2 > > 2 2 cat1 longname1 > > 3 3 cat1 longname1 > > 4 4 cat1 longname1 > > 5 5 cat1 longname1 > > 6 6 cat2 longname2 > > 7 7 cat2 longname2 > > 8 8 cat2 longname2 > > 9 9 cat2 longname2 > > 10 10 cat1 longname1 > > > > unique doesn't work in data.frame: > > mdn = do.call(rbind,lapply(split(x[,1], x[,2]), median)) > > data.frame(mdn,ln=as.character(unique(x[,3]))) > > mdn ln > > cat1 4 longname2 > > cat2 7 longname1 > > > > I want: > > mdn ln > > cat1 4 longname1 > > cat2 7 longname2 > > > > Thank you very much! > > > > PS - looking for simple'ish solutions. I know I can do it with loops and > > merges, but is there an option I am not using here? > > > > Ben > > > > [[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.