Hi:

Here's one way:

d <- read.table(textConnection("
  ind  xloc  yloc  gonad
1   1    5     2     12
2   1    5     4     25
3   1    3     3     30
4   1    5     4     10
5   1    1     4     08
10  1    1     4     11"), header = TRUE)
closeAllConnections()

library(plyr)
dsum <- ddply(d, .(xloc, yloc), summarise, ind = sum(ind), gonad =
sum(gonad))

dsum[order(dsum$gonad, decreasing = TRUE), ][1:2, ]

  xloc yloc ind gonad
4    5    4   2    35
2    3    3   1    30

I hope this isn't homework....

Dennis


On Fri, Feb 25, 2011 at 1:01 PM, Nicolas Gutierrez <nicolasg@uw.edu> wrote:

> Hi All,
>
> I've been doing circles with this all morning, although I'm sure there's a
> simple solution. I have a data.frame "pop" as follows:
>
> > pop
>
>   ind  xloc  yloc  gonad
> 1   1    5     2     12
> 2   1    5     4     25
> 3   1    3     3     30
> 4   1    5     4     10
> 5   1    1     4     08
> .   .    .     .      .
> 10  1    1     4     11
>
> And I need the following steps:
>
> 1. Sum "gonad" by combining (xloc, yloc) as follows and create data.frame
> "fish":
>
> > fish
>
>   ind  xloc  yloc  gonad
> 1   1     5     2     12
> 2   2     5     4     35
> 3   1     3     3     30
> 4   2     1     4     19
>
> 2. Extract the 2 highest values of "gonad":
>
> > new.fish
>
>   ind  xloc  yloc  gonad
> 1   2    5     4     35
> 2   1    3     3     31
>
> 3. Delete "fish" from "pop" (2 data.frames).
>
> Hope you get the idea and thanks for any help!!
>
> Nico
>
> ______________________________________________
> 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]]

