This should do it for you:

> x <- read.table(textConnection("   j           x
+ 1   1 0.795373270
+ 2   1 0.326845207
+ 3   1 0.049116967
+ 4   1 0.673830996
+ 5   2 0.411789618
+ 6   2 0.628034020
+ 7   2 0.413997203
+ 8   2 0.704016624
+ 9   3 0.135268136
+ 10  3 0.597653294
+ 11  3 0.682791760
+ 12  3 0.127604737
+ 13  4 0.624627821
+ 14  4 0.558165210
+ 15  4 0.010470284
+ 16  4 0.420216783"), header=TRUE)
> closeAllConnections()
> # keep at most two of each
> x.s <- split(x, x$j)
> do.call(rbind, lapply(x.s, function(z) z[1:min(nrow(z), 2),]))
     j         x
1.1  1 0.7953733
1.2  1 0.3268452
2.5  2 0.4117896
2.6  2 0.6280340
3.9  3 0.1352681
3.10 3 0.5976533
4.13 4 0.6246278
4.14 4 0.5581652
>


On Mon, Jun 9, 2008 at 7:10 PM, Lisa <sangwl@gmail.com> wrote:

> Hi,
>
> I am having a question. With multiple observations for each ID, I would
> like
> to keep only two or 3 observations for each ID. Does R have any command to
> do this? thank you very much!
> A simple example is below, How can I only keep the first 2 observations for
> each j?
>    j           x
> 1   1 0.795373270
> 2   1 0.326845207
> 3   1 0.049116967
> 4   1 0.673830996
> 5   2 0.411789618
> 6   2 0.628034020
> 7   2 0.413997203
> 8   2 0.704016624
> 9   3 0.135268136
> 10  3 0.597653294
> 11  3 0.682791760
> 12  3 0.127604737
> 13  4 0.624627821
> 14  4 0.558165210
> 15  4 0.010470284
> 16  4 0.420216783
>
>        [[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<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?

	[[alternative HTML version deleted]]

