Identifizieren von doppelten Spalten in einem R-Datenrahmen

8

Ich bin ein R Neuling und versuche doppelte Spalten aus einem größeren Datenrahmen zu entfernen (50K Zeilen, 215 Spalten). Der Rahmen hat eine Mischung aus diskreten kontinuierlichen und kategorischen Variablen.

Mein Ansatz bestand darin, für jede Spalte im Frame eine Tabelle in eine Liste zu generieren und dann mit der duplicated() -Funktion Zeilen in der Liste zu finden, die Duplikate sind, wie folgt:

%Vor%

Dies ist insbesondere bei großen kontinuierlichen Variablen nicht sehr effizient. Ich bin jedoch diesen Weg gegangen, weil ich nicht das gleiche Ergebnis mit der Zusammenfassung erhalten konnte (beachten Sie, dass im Folgenden angenommen wird, dass ein Original testframe Duplikate enthält):

%Vor%

Wenn Sie diesen Code ausführen, wird nur das erste gefundene Duplikat entfernt. Ich gehe davon aus, dass ich etwas falsch mache. Kann jemand darauf hinweisen, wo ich falsch liege, oder, noch besser, mich auf die bessere Möglichkeit hinweisen, doppelte Spalten aus einem Datenrahmen zu entfernen?

    
BenHealey 22.03.2012, 06:31
quelle

6 Antworten

16

Sie können mit lapply :

machen %Vor%

summary fasst die Verteilung zusammen und ignoriert dabei die Reihenfolge.

Nicht 100%, aber ich würde Digest verwenden, wenn die Daten riesig sind:

%Vor%     
kohske 22.03.2012, 07:58
quelle
10

Wie wäre es mit:

%Vor%     
Mostafa Rezaei 05.11.2015 19:04
quelle
3
%Vor%

funktioniert nicht, obwohl ich denke, dass es sollte, also probiere

aus %Vor%

oder wenn Sie besorgt sind, dass Zahlen zu Faktoren werden,

%Vor%

was produziert

%Vor%     
Henry 22.03.2012 08:11
quelle
3

Ein netter Trick, den Sie verwenden können, besteht darin, Ihren Datenrahmen zu transponieren und dann nach Duplikaten zu suchen.

%Vor%     
hshihab 09.03.2016 09:33
quelle
0

Hier ist ein einfacher Befehl, der funktionieren würde, wenn die doppelten Spalten Ihres Datenrahmens die gleichen Namen hätten:

%Vor%     
Fabio Natalini 09.03.2018 11:46
quelle
-1

Eigentlich müssten Sie nur das Duplikate-Ergebnis in Ihrem Code invertieren und an der Verwendung von subset festhalten (was im Vergleich zur Bracket-Notation imho besser lesbar ist)

%Vor%     
Holger Brandl 04.01.2017 09:33
quelle

Tags und Links