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.


@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

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.