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.