So löschen Sie Zeilen aus einem Datenrahmen, die n * NA enthalten

7

Ich habe eine Reihe großer Datensätze mit ~ 10 Spalten und ~ 200000 Zeilen. Nicht alle Spalten enthalten Werte für jede Zeile, obwohl mindestens eine Spalte einen Wert für die vorhandene Zeile enthalten muss. Ich möchte einen Schwellenwert für die Anzahl der zulässigen NA s in einer Zeile festlegen.

Mein Datenframe sieht ungefähr so ​​aus:

%Vor%

Und ich möchte in der Lage sein, die Zeilen zu löschen, die mehr als 2 Zellen enthalten, die NA enthalten, um

zu erhalten %Vor%

complete.cases entfernt alle Zeilen, die NA enthalten, und ich weiß, dass man Zeilen löschen kann, die NA in bestimmten Spalten enthalten, aber gibt es eine Möglichkeit, sie zu ändern, so dass es nicht spezifisch ist, welche Spalten% enthalten co_de%, aber wie viele der insgesamt tun?

Alternativ wird dieser Datenrahmen generiert, indem mehrere Datenrahmen mit

zusammengeführt werden %Vor%

Vielleicht könnte die Zusammenführungsfunktion geändert werden?

Danke

    
user2662708 08.08.2013, 01:03
quelle

4 Antworten

13

Verwenden Sie rowSums . So entfernen Sie Zeilen aus einem Datenrahmen ( df ), die genau n NA -Werte enthalten:

%Vor%

oder um Zeilen zu entfernen, die n oder mehr NA -Werte enthalten:

%Vor%

in beiden Fällen ersetzt natürlich n durch die Anzahl, die benötigt wird

    
Hugh 08.08.2013 01:25
quelle
4

Wenn dat der Name Ihres data.frames ist, gibt das folgende zurück, was Sie suchen:

%Vor%

Was das macht:

%Vor%

Wir verwenden die Ausgabe dieser letzten Anweisung zu Identifizieren Sie, welche Zeilen Sie behalten möchten. Beachten Sie, dass es nicht notwendig ist, dieses letzte logische Element tatsächlich zu speichern.

    
Ricardo Saporta 08.08.2013 01:28
quelle
2

Wenn d Ihr Datenrahmen ist, versuchen Sie Folgendes:

%Vor%     
Blue Magister 08.08.2013 01:25
quelle
1

Dies gibt ein Dataset zurück, bei dem höchstens zwei Werte pro Zeile fehlen:

%Vor%     
42- 08.08.2013 01:24
quelle

Tags und Links