Thank you all for your help.  I appreciate the assistance. I'm thinking I should have been more specific in my original question.  
 
Unless I'm mistaken, all of the suggestions so far have been for maximum vol and maximum Length by Lake and psd.  I'm trying to extract the max vol by Lake and psd along with the corresponding value of Length.  So, instead of maximum vol and maximum Length, I'd like to find the max vol and the Length associated with that value.
 
Sorry for any confusion, 
 
SR  
 
Steven H. Ranney 
Graduate Research Assistant (Ph.D) 
USGS Montana Cooperative Fishery Research Unit 
Montana State University 
P.O. Box 173460 
Bozeman, MT 59717-3460 
 
phone: (406) 994-6643 
fax: (406) 994-7479 
 
http://studentweb.montana.edu/steven.ranney
________________________________

From: Gabor Grothendieck [mailto:ggrothendieck@gmail.com]
Sent: Mon 12/22/2008 5:15 PM
To: Ranney, Steven
Cc: r-help@r-project.org
Subject: Re: [R] Summary information by groups programming assitance


Here are two solutions assuming DF is your data frame:

# 1. aggregate is in the base of R

aggregate(DF[c("Length", "vol")], DF[c("Lake", "psd")], max)

or the following which is the same except it labels psd as Category:

aggregate(DF[c("Length", "vol")], with(DF, list(Lake = Lake, Category
= psd)), max)


# 2. sqldf.  The sqldf package allows specification using SQL notation:

library|(sqldf)
sqldf("select Lake, psd as Category, max(Length), max(vol) from DF
group by Lake, psd")

There are many other good solutions too using various packages which
have already
been mentioned on this thread.

On Mon, Dec 22, 2008 at 4:51 PM, Ranney, Steven
<steven.ranney@montana.edu> wrote:
> All -
>
> I have data that looks like
>
>          psd   Species Lake Length  Weight    St.weight    Wr
> Wr.1     vol
> 432  substock     SMB      Clear    150   41.00      0.01  95.12438
> 95.10118  0.0105
> 433  substock     SMB      Clear    152   39.00      0.01  86.72916
> 86.70692  0.0105
> 434  substock     SMB      Clear    152   40.00      3.11  88.95298
> 82.03689  3.2655
> 435  substock     SMB      Clear    159   48.00      0.04  92.42095
> 92.34393  0.0420
> 436  substock     SMB      Clear    159   48.00      0.01  92.42095
> 92.40170  0.0105
> 437  substock     SMB      Clear    165   47.00      0.03  80.38023
> 80.32892  0.0315
> 438  substock     SMB      Clear    171   62.00      0.21  94.58105
> 94.26070  0.2205
> 439  substock     SMB      Clear    178   70.00      0.01  93.91912
> 93.90571  0.0105
> 440  substock     SMB      Clear    179   76.00      1.38 100.15760
> 98.33895  1.4490
> 441       S-Q     SMB      Clear    180   75.00      0.01  97.09330
> 97.08035  0.0105
> 442       S-Q     SMB      Clear    180   92.00      0.02 119.10111
> 119.07522  0.0210
> ...
> [truncated]
>
> where psd and lake are categorical variables, with five and four
> categories, respectively.  I'd like to find the maximum vol and the
> lengths associated with each maximum vol by each category by each lake.
> In other words, I'd like to have a data frame that looks something like
>
> Lake            Category        Length  vol
> Clear           substock        152             3.2655
> Clear           S-Q             266             11.73
> Clear           Q-P             330             14.89
> ...
> Pickerel        substock        170             3.4965
> Pickerel        S-Q             248             10.69
> Pickerel        Q-P             335             25.62
> Pickerel        P-M             415             32.62
> Pickerel        M-T             442             17.25
>
>
> In order to originally get this, I used
>
> with(smb[Lake=="Clear",], tapply(vol, list(Length, psd),max))
> with(smb[Lake=="Enemy.Swim",], tapply(vol, list(Length, psd),max))
> with(smb[Lake=="Pickerel",], tapply(vol, list(Length, psd),max))
> with(smb[Lake=="Roy",], tapply(vol, list(Length, psd),max))
>
> and pulled the values I needed out by hand and put them into a .csv.
> Unfortunately, I've got a number of other data sets upon which I'll need
> to do the same analysis.  Finding a programmable alternative would
> provide a much easier (and likely less error prone) method to achieve
> the same results.  Ideally, the "Length" and "vol" data would be in a
> data frame such that I could then analyze with nls.
>
> Does anyone have any thoughts as to how I might accomplish this?
>
> Thanks in advance,
>
> Steven Ranney
>
> ______________________________________________
> 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]]

