У меня есть таблица с 21638 уникальными * строками:
vocabulary <- read.table("http://socserv.socsci.mcmaster.ca/jfox/Books/Applied-Regression-2E/datasets/Vocabulary.txt", header=T)
Эта таблица содержит пять столбцов, первая из которых содержит идентификационные номера респондентов. Я хочу проверить, появляются ли какие-либо респонденты дважды, или все респонденты уникальны.
Для подсчета уникальных идентификаторов я могу использовать
length(unique(vocabulary$id))
и проверить, есть ли какие-либо дубликаты, которые я мог бы сделать
length(unique(vocabulary$id)) == nrow(vocabulary)
который возвращает TRUE
, если нет дубликатов (которых нет).
Мой вопрос:
Есть ли прямой способ вернуть значения или номера строк дубликатов?
Некоторые дополнительные пояснения:
Существует проблема интерпретации с использованием функции duplicated()
, потому что она возвращает только дубликаты в строгом смысле, исключая "оригиналы". Например, sum(duplicated(vocabulary$id))
или dim(vocabulary[duplicated(vocabulary$id),])[1]
может возвращать "5" в качестве количества повторяющихся строк. Проблема в том, что если вы знаете только количество дубликатов, вы не будете знать, сколько строк они дублируют. "5" означает, что есть пять строк с одним дубликатом каждый или что есть одна строка с пятью дубликатами? И поскольку у вас не будет идентификаторов или номеров строк дубликатов, у вас не было бы средств поиска "оригиналов".
* Я знаю, что в этом опросе нет повторяющихся идентификаторов, но это хороший пример, потому что, используя любой из ответов, приведенных в другом месте этого вопроса, например duplicated(vocabulary$id)
или table(vocabulary$id)
, выведет стог сена на ваш экран в которые вам не удастся найти какие-либо редкие повторяющиеся иглы.