2016-03-11 4 views
3

Использование R. Базовый пакет, dplyr или data.table - все в порядке для меня. Мои данные - ~ 1000 строк по 20 столбцов. Я ожидаю около 300 дубликатов.R - найти и перечислить повторяющиеся строки на основе двух столбцов

Я хотел бы сделать что-то вроде следующего, но с одним изменением:

Match/group duplicate rows (indices)

Я хотел бы найти, не полностью дублированные строки, а строки дублируются в двух столбцах. Например, если эта входная таблица:

File  T.N  ID  Col1  Col2 
BAI.txt T  1  sdaf eiri 
BAJ.txt N  2  fdd  fds 
BBK.txt T  1  ter  ase 
BCD.txt N  1  twe  ase 

Если я хочу найти дубликаты в TN & ID только, я в конечном итоге со следующей таблицей:

File  T.N  ID  Col1  Col2 
BAI.txt T  1  sdaf eiri 
BBK.txt T  1  ter  ase 

ответ

6

Вот вариант использования duplicated дважды, второй раз вместе с fromLast = TRUE выбирают ион, потому что он возвращает значение ИСТИНА только с дублирующегося значения на входах

dupe = data[,c('T.N','ID')] # select columns to check duplicates 
data[duplicated(dupe) | duplicated(dupe, fromLast=TRUE),] 

#  File T.N ID Col1 Col2 
#1 BAI.txt T 1 sdaf eiri 
#3 BBK.txt T 1 ter ase 
+0

Это пока единственный что, похоже, не имеют случайных синглов. У других, похоже, есть проблемы, если столбец идентификатора совпадает, но TN не делает (когда я пытаюсь использовать свои реальные данные). –

2

Просто используйте выбранные столбцы чтобы создать индекс, который вы хотите подмножество на

data<-read.csv() 
data<-data[which(duplicated(data[,c('T.N','ID")])==T),] 
+0

Это хорошо работает. Вы забыли закрытую круглую скобку. data <-data [which (duplicated (data [, c ('T.N', 'ID ")]) == T),] –

+1

Результат не совсем тот, который запросил OP – HubertL

Смежные вопросы