[R] data frame select max group by like function
Phil Spector
spector at stat.berkeley.edu
Tue Mar 9 20:54:53 CET 2010
Yet another way to do this with base R:
> dat = read.csv(textConnection('ID, year, score
+ tom, 1995, 88
+ rick, 1994, 90
+ mary, 2000, 97
+ tom, 1998, 60
+ mary, 1998,100'))
> do.call(rbind,lapply(split(dat,dat$ID),function(x)x[which.max(x$score),]))
ID year score
mary mary 1998 100
rick rick 1994 90
tom tom 1995 88
- Phil Spector
Statistical Computing Facility
Department of Statistics
UC Berkeley
spector at stat.berkeley.edu
On Tue, 9 Mar 2010, Tan, Richard wrote:
> Hi, I have a data frame with 3 columns: ID, year and score. How can I
> select for each unique ID, the year that has the max score? For
> example, for data frame
>
> ID, year, score
> tom, 1995, 88
> rick, 1994, 90
> mary, 2000, 97
> tom, 1998, 60
> mary, 1998,100
>
> I shall have
> ID, year, score
> tom, 1995, 88
> rick, 1994, 90
> mary, 1998,100
>
> Thanks,
> Richard
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at 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.
>
More information about the R-help
mailing list