[R] find the position of first observation for each subject
MacQueen, Don
macqueen1 at llnl.gov
Fri Jun 14 16:44:06 CEST 2013
I would typically use rle() for this kind of thing:
> tmp <- cumsum(rle(id)$lengths)
> c(1, tmp[-length(tmp)]+1)
[1] 1 4 9
It does assume that all rows for each unique value of id are grouped
together, but does not require that the rows be sorted by id.
-Don
--
Don MacQueen
Lawrence Livermore National Laboratory
7000 East Ave., L-627
Livermore, CA 94550
925-423-1062
On 6/13/13 12:56 AM, "Gallon Li" <gallon.li at gmail.com> wrote:
>suppose I have the following data
>
>id=c(rep(1,3),rep(2,5),rep(3,4))
>time=c(seq(1,3),seq(2,6),seq(1,4))
>
>ds=cbind(id,time)
>
>> ds
> id time
> [1,] 1 1
> [2,] 1 2
> [3,] 1 3
> [4,] 2 2
> [5,] 2 3
> [6,] 2 4
> [7,] 2 5
> [8,] 2 6
> [9,] 3 1
>[10,] 3 2
>[11,] 3 3
>[12,] 3 4
>
>i want to return a vector that indicates the position of the first
>observation for each id. for the above data, i wish to get (1,4,9).
>
>is it possible to get this quickly>?
>
> [[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