[PYTHON] Ich möchte eine Spalte mit NA in R einfach löschen

Die Vorstufe der Datenverarbeitung besteht aus dem Lesen der Daten. Wenn Sie die Daten lesen, die Sie haben, haben Sie häufig leere Spalten oder Spalten, die nicht dieselbe Länge haben, und Sie möchten unnötige Spalten löschen. Angenommen, Sie lesen die folgende Tabelle.

a b c d
1 2 3 NA
2 3 4 NA
3 4 NA NA
df <- data.frame(a = c(1,2,3),
                 b = c(2,3,4),
                 c = c(3,4,NA),
                 d = c(NA,NA,NA))
> df
  a b  c  d
1 1 2  3 NA
2 2 3  4 NA
3 3 4 NA NA

Verwenden Sie dplyr :: select_if

library(dplyr)

Wenden Sie "anyNA ()" an, um zu überprüfen, ob NA für jede Spalte enthalten ist, und invertieren Sie den Rückgabewert als logischen Vektor.

df %>% lapply(.,anyNA) %>% unlist %>% !.
    a     b     c     d 
 TRUE  TRUE FALSE FALSE 

Übergeben Sie dies an die Funktion select_if (), die die Spalten auswählt, die die Bedingungen erfüllen.

df %>% select_if(lapply(.,anyNA) %>% unlist %>% !.)
  a b
1 1 2
2 2 3
3 3 4

Ich habe es geschafft, unnötige Spalten mit einem einzeiligen Skript loszuwerden. Ich denke, die Lesbarkeit ist dank der Pipe nicht so schlecht.

Nachtrag: Verwenden Sie purrr :: negate ()

Der Kommentar von @hkzm war hilfreich.

Die Verwendung von purrr :: negat (), das die Negation der angegebenen Funktion übergibt, machte das Schreiben einfacher und einfacher.

library(tidyverse)
df %>% select_if(negate(anyNA))
  a b
1 1 2
2 2 3
3 3 4

Dies entspricht dem Invertieren mit dem Operator ! Und dem Erstellen einer Formel mit ~.

df %>% select_if(~ !anyNA(.))
  a b
1 1 2
2 2 3
3 3 4

Ich persönlich dachte, dass derjenige mit besserer Lesbarkeit derjenige sein würde, der purrr :: negat () verwendet.

Mit Python ist es einfach, aber ich habe aus irgendeinem Grund Schwierigkeiten mit R.

Für Python-Pandas gibt es eine Methode dropna (), die fehlende Werte entfernt, die sowohl in Zeilen- als auch in Spaltenrichtung anwendbar ist.

Referenz: Ausschließen (löschen) / ersetzen (ausfüllen) / fehlenden Wert NaN durch Pandas extrahieren

In R ist die einzige Funktion, die fehlende Werte löscht, die Zeilenrichtung.

--Löschen Sie Zeilen, die mindestens eine NA enthalten

Ich habe eine Google-Suche durchgeführt und nach einer Möglichkeit gesucht, in Spaltenrichtung zu löschen, konnte sie jedoch nicht leicht finden. Ich habe diesen Artikel endlich gefunden.

Mittel zum Entfernen von Spalten, die NA in R enthalten

Abhängig von der Programmiersprache können Sie Stärken und Schwächen haben. Warum gibt es in R keine ähnliche Funktion?

Recommended Posts

Ich möchte eine Spalte mit NA in R einfach löschen
Ich möchte Timeout einfach in Python implementieren
Ich möchte R-Datensatz mit Python verwenden
Ich möchte R-Funktionen einfach mit ipython notebook verwenden
Ich möchte in der Einschlussnotation drucken
Ich möchte Matplotlib in PySimpleGUI einbetten
Ich möchte Dunnetts Test in Python machen
Ich möchte einfach ein Rauschmodell erstellen
Ich möchte Datetime.now in Djangos Test reparieren
Ich möchte mit Python ein Fenster erstellen
Wie auch immer, ich möchte JSON-Daten einfach überprüfen
Ich möchte DB-Informationen in einer Liste speichern
Ich möchte verschachtelte Dicts in Python zusammenführen
Ich möchte leicht einen leckeren Laden finden
Ich möchte den Fortschritt in Python anzeigen!
Ich möchte in Python schreiben! (1) Überprüfung des Codeformats
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte mit einem Knopf am Kolben übergehen
Ich möchte mich mit Backpropagation (tf.custom_gradient) (Tensorflow) selbst verwenden.
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Auch mit JavaScript möchte ich Python `range ()` sehen!
Ich möchte eine Datei mit Python zufällig testen
Ich möchte einfach eine modellbasierte Entwicklungsumgebung erstellen
Ich möchte mit einem Roboter in Python arbeiten.
Ich möchte in Python schreiben! (3) Verwenden Sie Mock
Ich möchte am Ende etwas mit Python machen
Ich möchte Strings in Kotlin wie Python manipulieren!
Ich möchte so etwas wie Uniq in Python sortieren
Ich möchte SUDOKU lösen
[Django] Ich möchte mich nach einer neuen Registrierung automatisch anmelden
Ich möchte den Wörterbuchtyp in der Liste eindeutig machen
[Einführung in Pytorch] Ich möchte Sätze in Nachrichtenartikeln generieren
Ich möchte eindeutige Werte in einem Array oder Tupel zählen
Ich möchte die gültigen Zahlen im Numpy-Array ausrichten
Ich möchte Python mit VS-Code ausführen können
Ich möchte eine schöne Ergänzung zu input () in Python hinzufügen
Ich wollte mit boto3 mehrere objekte in s3 löschen
Ich wollte den AWS-Schlüssel nicht in das Programm schreiben
[Linux] Ich möchte das Datum wissen, an dem sich der Benutzer angemeldet hat
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
Ich möchte Rails mit Rails auch in einer vagabundierenden Umgebung betreiben
LINEbot-Entwicklung möchte ich den Betrieb in der lokalen Umgebung überprüfen
[Python / AWS Lambda-Ebenen] Ich möchte nur Module in AWS Lambda-Ebenen wiederverwenden
Ich möchte eine Pipfile erstellen und im Docker wiedergeben
Ich möchte die zweite Zeile zum Spaltennamen in Pandas machen
Ich möchte den G-Test in einem Monat Tag 1 bestehen
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
Ich möchte systemd grob verstehen
Ich möchte Bilder kratzen und trainieren
Ich möchte ○○ mit Pandas machen
Ich möchte Yolos Anmerkung kopieren
Ich möchte mit Python debuggen
Ich möchte die Farbe ändern, indem ich auf den Streupunkt in matplotlib klicke
Ich möchte Variationen in verschiedenen Statistiken finden! Empfehlung für ein Resample (Bootstrap)
"CSI", das ich Anfängern der interaktiven Konsolenanwendungsproduktion beibringen möchte
(Matplotlib) Ich möchte ein Diagramm mit einer in Pixel angegebenen Größe zeichnen
[C-Sprache] Ich möchte Zufallszahlen im angegebenen Bereich generieren
Ich möchte eine in Python in PDF konvertierte Tabelle wieder in CSV konvertieren
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Ich möchte die abstrakte Klasse (ABCmeta) von Python im Detail erklären
Ich habe Airbnb-Daten für diejenigen analysiert, die in Amsterdam bleiben möchten