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
                                         spec...@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@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.


______________________________________________
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.

Reply via email to