Удаление дублированных строк данных фрейма в R [закрыто]


71

Как я могу удалить повторяющиеся строки из этого примера фрейма данных?

A   1
A   1
A   2
B   4  
B   1
B   1
C   2
C   2

Я хотел бы удалить дубликаты на основе обоих столбцов:

A   1
A   2
B   4
B   1
C   2

Порядок не важен.


@ whuber разве это не должно быть перенесено в ТАК?
ЛОП

@Llopis Да, но сейчас уже слишком поздно делать это - и было слишком поздно, когда мы его изначально закрыли. Этот вопрос рассматривался (пограничный) по теме много лет назад, но в настоящее время он будет быстро перенесен.
whuber

Ответы:


115

unique()действительно отвечает на ваш вопрос, но другая связанная и интересная функция для достижения той же цели duplicated().

Это дает вам возможность посмотреть, какие строки дублируются.

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)

duplicated(df)
[1] FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE  TRUE

> df[duplicated(df), ]
  a b
2 A 1
6 B 1
8 C 2

> df[!duplicated(df), ]
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2

2
Спасибо за упоминание «дублированной» функции. Его можно использовать для удаления дублированных строк на основе подмножества столбцов.
Джоко

51

Вы ищете unique().

a <- c(rep("A", 3), rep("B", 3), rep("C",2))
b <- c(1,1,2,4,1,1,2,2)
df <-data.frame(a,b)
unique(df)

> unique(df)
  a b
1 A 1
3 A 2
4 B 4
5 B 1
7 C 2

1
Спасибо Бернд. Я думал, что уникальный может быть применен только для конкретного столбца. Я не знал, что его можно использовать и для всего фрейма данных. Еще раз спасибо
Яна
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.