Entfernen doppelter Zeilendatenrahmen in R [geschlossen]

71

Wie kann ich doppelte Zeilen aus diesem Beispieldatenrahmen entfernen?

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

Ich möchte die Duplikate entfernen, die auf beiden Spalten basieren:

A   1
A   2
B   4
B   1
C   2

Ordnung ist nicht wichtig.

Jana
quelle
@whuber sollte das nicht auf SO verschoben werden?
11.
@Llopis Ja, aber es ist zu spät, das jetzt zu tun - und es war zu spät, als wir es ursprünglich geschlossen haben. Diese Art von Frage wurde vor vielen Jahren als (grenzwertig) thematisch betrachtet, aber heutzutage würde sie schnell migriert.
whuber

Antworten:

115

unique()in der Tat beantwortet Ihre Frage, aber eine andere verwandte und interessante Funktion, um das gleiche Ziel zu erreichen, ist duplicated().

Hier können Sie nachsehen, welche Zeilen dupliziert wurden.

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
Rahul
quelle
2
Vielen Dank, dass Sie die Funktion "dupliziert" erwähnt haben. Es kann verwendet werden, um doppelte Zeilen basierend auf einer Teilmenge der Spalten zu löschen.
Joko
51

Sie suchen nach 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
Bernd Weiss
quelle
1
Danke Bernd. Ich dachte, einzigartig kann nur für eine bestimmte Spalte angewendet werden. Ich wusste nicht, dass es auch für den gesamten Datenrahmen verwendet werden kann.
Jana