Re: [R] Aggregate by First case

From: Karl Ove Hufthammer <Karl.Hufthammer_at_math.uib.no>
Date: Fri, 30 May 2008 09:35:44 +0200

Jojje Andersson:

> I have a dataframe with in one column an id-variable and in another a
> year-variable. One id-number can occur several years. I have sorted the
> dataframe on id then on year so the same id-number is sorted by year with
> the first occurens at top.
>
> Now I want to make a subset of this dataframe with just the first year the
> id-number occur, so the first case of every id.
>
> Id         Year
> 123456 2001
> 123456 2002
> 123456 2003
> 655432 2001
> 655432 2002
> 655432 2003

The following should work (even if the data frame was *not* sorted):

  Id = c(123456,123456,123456,655432,655432,655432)   Year = c(2001,2002,2003,2001,2002,2003)

  d = data.frame(Id, Year)
  aggregate(d, list(Id), min)[,-1]

Output:

        Id Year
  1 123456 2001
  2 655432 2001

-- 
Karl Ove Hufthammer

______________________________________________
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.
Received on Fri 30 May 2008 - 07:39:51 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 30 May 2008 - 08:30:44 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive