Подтвердить что ты не робот

Как удалить все дубликаты, чтобы NONE остался в фрейме данных?

Существует тот же вопрос для PHP, но я работаю с R и не могу перевести решение моей проблемы.

У меня есть этот кадр данных с 10 строками и 50 столбцами, где некоторые из строк абсолютно идентичны. Если я использую уникальную на нем, я получаю одну строку за - пусть говорят - "тип", но я действительно хочу получить только те строки, которые появляются только один раз. Кто-нибудь знает, как я могу это достичь?

Я могу посмотреть на кластеры и тепловые карты, чтобы отсортировать их вручную, но у меня больше кадры данных, чем упомянутые выше (с до 100 строк), где это немного сложно.

4b9b3361

Ответ 1

Это приведет к извлечению строк, которые появляются только один раз (при условии, что ваш фрейм данных имеет имя df):

df[!(duplicated(df) | duplicated(df, fromLast = TRUE)), ]

Как это работает: Функция duplicated проверяет, появляется ли строка, по крайней мере, второй раз, начиная с первой строки. Если используется аргумент fromLast = TRUE, функция начинается с последней строки.

Оба логических результата объединяются с | (логическим или другим) в новый вектор, который указывает все строки, появляющиеся более одного раза. Результат этого отрицается с помощью !, тем самым создавая логический вектор, указывающий на строки, появляющиеся только один раз.

Ответ 2

Возможность с участием dplyr может быть:

df %>%
 group_by_all() %>%
 filter(n() == 1)

Или же:

df %>%
 group_by_all() %>%
 filter(!any(row_number() > 1))