2012-12-07 9 views
11

Es gibt eine similar question für PHP, aber ich arbeite mit R und bin nicht in der Lage, die Lösung für mein Problem zu übersetzen.Wie kann ich alle Duplikate entfernen, so dass KEINE in einem Datenrahmen übrig sind?

Ich habe diesen Datenrahmen mit 10 Zeilen und 50 Spalten, wobei einige der Zeilen absolut identisch sind. Wenn ich unique verwende, bekomme ich eine Zeile pro - sagen wir mal - "type", aber was ich eigentlich will, ist nur die Zeilen zu bekommen, die nur einmal vorkommen. Weiß jemand, wie ich das erreichen kann?

Ich kann Cluster und Heatmaps sehen, um es manuell zu sortieren, aber ich habe größere Datenrahmen als die oben erwähnte (mit bis zu 100 Zeilen), wo dies ein bisschen schwierig wird.

Antwort

33

Dadurch werden die Zeilen extrahieren, die nur einmal vorkommen (Datenrahmen unter der Annahme df genannt):

df[!(duplicated(df) | duplicated(df, fromLast = TRUE)), ] 

So funktioniert es: Die Funktion duplicated prüft, ob eine Leitung zum zweiten Mal mindestens erscheint ab der ersten Zeile. Wenn das Argument fromLast = TRUE verwendet wird, beginnt die Funktion in der letzten Zeile.

Bothes boolesche Ergebnisse werden mit | (logisch 'oder') in einen neuen Vektor kombiniert, der angibt, dass alle Zeilen mehr als einmal vorkommen. Das Ergebnis davon wird unter Verwendung von ! negiert, wodurch ein boolescher Vektor erzeugt wird, der nur einmal auftretende Linien anzeigt.

Verwandte Themen