subset(x, a %in% a[duplicated(a)])
works in all cases and it's the simplest, but as always all the solutions made me understand a little better the R concepts and functions.
I would suggest to include this in the help pages for duplicated. Also useful might be:
subset(x, !a %in% a[duplicated(a)])
giving all rows that don't have any duplicated
again thanks for all help in this mailing list
Here's one more possibility:
> subset(x, a %in% a[duplicated(a)]) a b 2 2 10 3 2 10 4 3 10 5 3 10 6 3 10
HTH,
Marc Schwartz
On Thu, 2005-03-17 at 22:25 -0500, Liaw, Andy wrote:> > > [[alternative HTML version deleted]]OK, strike one...
Here's my second try:
> cnt <- table(x[,1]) > v <- as.numeric(names(cnt[cnt > 1])) > v [1] 2 3 > x[x[,1] %in% v, ] a b 2 2 10 3 2 10 4 3 10 5 3 10 6 3 10
Andy
> From: Liaw, Andy > > Does this work for you? > > > x[table(x[,1]) > 1,] > a b > 2 2 10 > 3 2 10 > 5 3 10 > 6 3 10 > > Andy > > > From: Tiago R Magalhaes > > > > Hi > > > > I want to extract all the rows in a data frame that have duplicates > > for a given column. > > I would expect this question to come up pretty often but I have > > researched the archives and surprisingly couldn't find anything. > > The best I can come up with is: > > > > x <- data.frame(a=c(1,2,2,3,3,3), b=10) > > xdup1 <- duplicated(x[,1]) > > xdup2 <- duplicated(x[,1][nrow(x):1])[nrow(x):1] > > xAllDups <- x[(xdup1+xdup2)!=0,] > > > > This seems to work, but it's so convoluted that I'm sure there's a > > better method. > > Thanks for any help and enlightenment
______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html