Я прочитал CSV
файл в R data.frame. Некоторые строки имеют одинаковый элемент в одном из столбцов. Я хотел бы удалить строки, которые являются дубликатами в этом столбце. Например:
platform_external_dbus 202 16 google 1
platform_external_dbus 202 16 space-ghost.verbum 1
platform_external_dbus 202 16 localhost 1
platform_external_dbus 202 16 users.sourceforge 8
platform_external_dbus 202 16 hughsie 1
Я хотел бы только одну из этих строк, так как другие имеют те же данные в первом столбце.
r
duplicates
r-faq
user1897691
источник
источник
google
илиlocalhost
илиhughsie
?Ответы:
просто изолируйте ваш фрейм данных в нужных вам столбцах, затем используйте уникальную функцию: D
источник
[,1:3]
частью этого кода? Я новичок в R, поэтому я спрашиваю, что я могу только предположить, это очевидный вопрос.Для людей, которые пришли сюда, чтобы найти общий ответ для удаления дубликатов строк, используйте
!duplicated()
:Ответ от: удаление дублированных строк из фрейма данных R
источник
df[!duplicated(df[, 1:2])]
Функция
distinct()
вdplyr
пакете выполняет произвольное удаление дубликатов, либо из определенных столбцов / переменных (как в этом вопросе), либо с учетом всех столбцов / переменных.dplyr
является частьюtidyverse
.Данные и пакет
Удалить строки, дублированные в определенном столбце (например, столбце
a
)Обратите внимание, что
.keep_all = TRUE
сохраняются все столбцы, в противном случаеa
будет сохранен только столбец .Удалите строки, которые являются полными дубликатами других строк:
источник
.keep_all
для того , чтобы сохранить все столбцы, не следует смешивать сkeep
вpandas
.data.table
Пакет такжеunique
иduplicated
методы его собственный с некоторыми дополнительными функциями.Как
unique.data.table
иduplicated.data.table
методы имеют дополнительныйby
аргумент , который позволяет пропускатьcharacter
илиinteger
вектор имен столбцов или их местоположения соответственноЕще одна важная особенность этих методов - огромный выигрыш в производительности для больших наборов данных.
источник
Вы также можете использовать
dplyr
«sdistinct()
функцию! Это имеет тенденцию быть более эффективным, чем альтернативные варианты, особенно если у вас есть множество наблюдений.источник
общий ответ может быть, например:
вывод:
источник
-which
, это приведет к ошибке, если нет дубликатов, использованиеdf[!(duplicated(df)), ]
может быть более безопасным.С
sqldf
:Решение:
Вывод:
источник
Или вы можете поместить данные в столбцах 4 и 5 в одну строку с помощью
tidyr
:Дубликаты col 2 и 3 теперь удаляются для статистического анализа, но вы сохранили данные col 4 и 5 в виде таблицы и можете вернуться к исходному фрейму данных в любой точке с помощью
unnest()
.источник
Удалить дубликаты строк информационного кадра
В этом наборе данных нет ни одной повторяющейся строки, поэтому он возвратил то же количество строк, что и в mydata.
Удалить дублирующиеся строки на основе одной переменной
Функция .keep_all используется для сохранения всех других переменных в кадре выходных данных.
Удалить дубликаты строк на основе нескольких переменных
Функция .keep_all используется для сохранения всех других переменных в кадре выходных данных.
(от: http://www.datasciencemadesimple.com/remove-duplicate-rows-r-using-dplyr-distinct-function/ )
источник
Эту проблему также можно решить, выбрав первую строку в каждой группе, где группа - это столбцы, на основе которых мы хотим выбрать уникальные значения (в общем примере это только 1-й столбец).
Используя базу R:
В
dplyr
Или используя
data.table
Если нам нужно найти уникальные строки, основанные на нескольких столбцах, просто добавьте имена этих столбцов в части группировки для каждого из приведенных выше ответов.
данные
источник
Вот очень простой, быстрый
dplyr
/tidy
решение:Удалить строки, которые полностью совпадают:
Удалите строки, которые одинаковы только в определенных столбцах:
источник