[R] How to get minimum value by group

JustinNabble justinmmcgrath at hotmail.com
Tue Jan 12 01:58:04 CET 2010


I'd like to get a long data set of minimum values from groups in another data
set.
The following almost does what I want. (Note, I'm using the word factor
differently from it's meaning in R; bad choice of words)

myframe = data.frame(factor1 = rep(1:2,each=8), factor2 =
rep(c("a","b"),each=4, times=2), factor3 = rep(c("x","y"),each=2, times=4),
y=1:16)
attach(myframe)
minimums = by(y, list(factor1, factor2,factor3), min)
detach(myframe)

The problem is that "minimums" is object of class "by", which looks like
some kind of array with the number of dimension equal to the number of
factors. I just want two dimensions though, with factors in columns. I can't
figure out how to reformat it to something like this:

factor1 factor2 factor2 y
1         a         x         1
2         a         x         9
1         b         x         5
...

I could make nested for loops, but I'd like something that will work for an
arbitrary number of factors. I've seen some functions that will rearrange
data (e.g. reshape), but they all seem to require a data.frame to start
with.
-- 
View this message in context: http://n4.nabble.com/How-to-get-minimum-value-by-group-tp1011745p1011745.html
Sent from the R help mailing list archive at Nabble.com.



More information about the R-help mailing list