Ths should do it:

> do.call(rbind, lapply(split(x, x$ID), tail, 1))
         ID Type N
45900 45900    I 7
46550 46550    I 7
49270 49270    E 3


On Wed, May 6, 2009 at 6:09 PM, Max Webber <ubbermax@gmail.com> wrote:

> Given a dataframe like
>
>  > data
>        ID Type N
>  1  45900    A 1
>  2  45900    B 2
>  3  45900    C 3
>  4  45900    D 4
>  5  45900    E 5
>  6  45900    F 6
>  7  45900    I 7
>  8  49270    A 1
>  9  49270    B 2
>  10 49270    E 3
>  18 46550    A 1
>  19 46550    B 2
>  20 46550    C 3
>  21 46550    D 4
>  22 46550    E 5
>  23 46550    F 6
>  24 46550    I 7
>  >
>
> containing an identifier (ID), a variable type code (Type), and
> a running count of the number of records per ID (N), how can I
> return a dataframe of only those records with the maximum value
> of N for each ID? For instance,
>
>  > data
>        ID Type N
>  7  45900    I 7
>  10 49270    E 3
>  24 46550    I 7
>
> I know that I can use
>
>   > tapply ( data $ N , data $ ID , max )
>   45900 46550 49270
>       7     7     3
>   >
>
> to get the values of the maximum N for each ID, but how is it
> that I can find the index of these values to subsequently use to
> subscript data?
>
>
> --
> maxine-webber
>
> ______________________________________________
> 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<http://www.r-project.org/posting-guide.html>
> and provide commented, minimal, self-contained, reproducible code.
>



-- 
Jim Holtman
Cincinnati, OH
+1 513 646 9390

What is the problem that you are trying to solve?

	[[alternative HTML version deleted]]


