Another neat solution! Thanks a lot, Sarah!

On Fri, Dec 13, 2013 at 4:35 PM, Sarah Goslee <sarah.gos...@gmail.com>wrote:

> What about:
>
> lapply(levels(d$fac), function(x)head(d[d$fac == x,], 1))
>
>
> Thanks for the reproducible example. If you put set.seed(123) before
> the call to sample, then everyone who tries it will get the same data
> frame d.
>
> Sarah
>
>
> On Fri, Dec 13, 2013 at 4:15 PM, Gang Chen <gangch...@gmail.com> wrote:
> > Suppose I have a dataframe defined as
> >
> >      L3 <- LETTERS[1:3]
> >      (d <- data.frame(cbind(x = 1, y = 1:10), fac = sample(L3, 10,
> replace
> > = TRUE)))
> >
> >    x  y fac
> > 1  1  1   C
> > 2  1  2   A
> > 3  1  3   B
> > 4  1  4   C
> > 5  1  5   B
> > 6  1  6   B
> > 7  1  7   A
> > 8  1  8   A
> > 9  1  9   B
> > 10 1 10   A
> >
> > I want to extract those rows that are the first occurrences for each
> level
> > of factor 'fac', which are basically the first three rows above. How can
> I
> > achieve that? The real dataframe is more complicated than the example
> > above, and I can't simply list all the levels of factor 'fac' by
> > exhaustibly listing all the levels like the following
> >
> > d[d$fac=='A' | d$fac=='B' | d$fac=='C', ]
> >
> > Thanks,
> > Gang
>
> --
> Sarah Goslee
> http://www.functionaldiversity.org
>

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

Reply via email to