[R] Help with apply and split...

jim holtman jholtman at gmail.com
Fri May 2 12:52:45 CEST 2008


What you are seeing are the row numbers of the original locations.  If
datgic is really a data frame, this is probably what you want using
lapply and do.call:

> x <- data.frame(a=letters, b=sample(1:4, 26, TRUE))
> y <- lapply(split(x, x$b), tail, 1)
> do.call(rbind, y)
  a b
1 z 1
2 y 2
3 w 3
4 x 4


On Fri, May 2, 2008 at 4:40 AM, Mike H. Ryu <hokyung.ryu at yale.edu> wrote:
> I'm trying to drop all rows except for the ones with the most recent year.
> So I split the data frame by NPERMNO and keep just the last record of all
> groups.
>
> datg=t(sapply(split(datgic, datgic$NPERMNO, drop=TRUE), function(x){return(
> x[nrow(x),] )}))
>
>
> I get something like this...
>
>      GVKEY  NPERMNO GIC      year
> 10001 12994  10001   55102010 2007
> 10002 19049  10002   40101015 2007
> 10009 16739  10009   40101010 1999
>
> Has this been made into a proper data frame.  How come the row numbers are
> not 1,2,3,4...?
>
> Thank you so much, and I would really appreciate any help!
>
> Mike
>
> ______________________________________________
> 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.
>



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

What is the problem you are trying to solve?



More information about the R-help mailing list