2016-09-19 1 views
1

Entschuldigung, wenn dies eine doppelte Frage ist, wie es scheint, etwas einfach genug, das bereits gefragt worden sein kann, obwohl eine schnelle Suche nach der Frage nicht ein genaue Übereinstimmung mit meinem speziellen Problem - wenn es existiert, würde es mich freuen, wenn Sie die Frage teilen würden.R: entfernen Sie Zeilen mit den gleichen Elementen, aber in verschiedenen Spalten

Dataframe als Referenz - Ich habe das Beispiel Dataframe von Hand gemacht, also habe keine dput() für jetzt, aber könnte es zur Verfügung stellen:
.

> head(data[, 1:8], n = 4) 
      A   B  C   D   E   F  
1  Donald  Will  Joe  Chris  Greg  Isaiah 
2  Donald  Will  Jeff  Chris  Greg  Isaiah 
3  Donald  Will  Jeff  Steve  Greg  Isaiah 
4  Donald  Will  Jeff  Steve Isaiah  Greg 

.
In diesem (kleinen Beispiel meines größeren) Datenrahmens muss ich alle doppelten Zeilen entfernen, wobei eine Zeile als Duplikat gilt, wenn sie alle die gleichen Namen wie eine andere Zeile hat, ohne Rücksicht darauf, in welchen Spalten die Namen stehen in diesem Fall würde Zeile 4 als Duplikat von Zeile 3 betrachtet werden, und ich möchte (entweder) Zeile entfernen.

Beachten Sie, dass die Reihenfolge der Spalten in meinem Datenrahmen sehr wichtig ist, und so kann ich nicht einfach jede Zeile alphabetisch sortieren und dann exakte Duplikate entfernen.

Danke für jede Hilfe !!

+1

Sie könnten eine neue Variable erstellen, in der Sie die Namen sortieren und dann zusammen als eine Zeichenfolge einfügen. Jetzt können Sie diese Zeichenfolge verwenden, um Duplikate mit der Duplikatfunktion zu finden –

+0

okay, danke, werde dies versuchen - in der Zwischenzeit war/hoffte auf eine Lösung/Funktion, die mit dem Dataframe arbeitete – Canovice

Antwort

4
df <- read.table(header=TRUE,stringsAsFactors=FALSE,text=" 
      A   B  C   D   E   F  
1  Donald  Will  Joe  Chris  Greg  Isaiah 
2  Donald  Will  Jeff  Chris  Greg  Isaiah 
3  Donald  Will  Jeff  Steve  Greg  Isaiah 
4  Donald  Will  Jeff  Steve Isaiah  Greg") 


df <- df[!duplicated(t(apply(df,1,sort))),] 
Verwandte Themen