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.