Видалення дублікату кадру даних рядків у 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, чи не слід це переносити на SO?
llrs

@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.