2016-02-29 4 views
0

У меня есть data frame, что я хочу выбрать обе строки с дублирующимися значениями. В приведенном ниже примере я хочу новый кадр данных или два отдельных кадра данных с двумя записями для 19 и 32 соответственно.Извлечь дубликаты записей в dataframe

 a <- c(8, 18, 19, 19, 20, 30, 32, 32, 58) 
     b <- c(1950, 1965, 1971, 1981, 1999, 1969, 1994, 1985) 
     df <- data.frame(a,b)  
     df 
     a b 
     1 8 1950 
     2 18 1965 
     3 19 1971 
     4 19 1981 
     5 20 1999 
     6 30 1969 
     7 32 1994 
     8 32 1999 
     9 58 1985 

Я попытался с помощью df[duplicated(df$a), ], но это лишь извлекает вторую запись, которая дублируется, где я хочу их обоих. Конечная цель заключается в вычитании лет во втором столбце между двумя записями 19 и 32.

ответ

1

Мы можем использовать

df[duplicated(df$a)|duplicated(df$a, fromLast=TRUE),] 
# a b 
#3 19 1971 
#4 19 1981 
#7 32 1994 
#8 32 1999 
Смежные вопросы