37 Stimmen

Spalten mit allen fehlenden Werten finden

Ich schreibe eine Funktion, die prüfen muss, ob (und welche!) Spalte (Variable) alle fehlenden Werte enthält ( NA , <NA> ). Es folgt ein Fragment der Funktion:

test1 <- data.frame (matrix(c(1,2,3,NA,2,3,NA,NA,2), 3,3))
test2 <- data.frame (matrix(c(1,2,3,NA,NA,NA,NA,NA,2), 3,3))

na.test <-  function (data) {
  if (colSums(!is.na(data) == 0)){
      stop ("The some variable in the dataset has all missing value,
     remove the column to proceed")
      }
      }
na.test (test1)

Warning message:
In if (colSums(!is.na(data) == 0)) { :
  the condition has length > 1 and only the first element will be used

Q1: Warum tritt der obige Fehler auf und kann er behoben werden?

Q2: Gibt es eine Möglichkeit herauszufinden, welche der Spalten alle NA zum Beispiel die Liste ausgeben (Name der Variablen oder Spaltennummer)?

3voto

Moh Punkte 188

Dplyr-Ansatz zur Ermittlung der Anzahl der NAs für jede Spalte:

df %>% 
  summarise_all((funs(sum(is.na(.)))))

2voto

Arthur Small Punkte 560

Variante des dplyr-Ansatzes:

dataframe %>% select_if(function(x) all(is.na(x))) %>% colnames()

0voto

cs4r Punkte 425

Mit dem folgenden Befehl erhalten Sie eine schöne Tabelle mit den Spalten, die NA-Werte haben:

sapply(dataframe, function(x)all(any(is.na(x))))

Das ist eine Verbesserung gegenüber der ersten Antwort, die in manchen Fällen nicht richtig funktioniert.

0voto

Abhi Punkte 81
sapply(b,function(X) sum(is.na(X))

Dies gibt die Anzahl der na in jeder Spalte des Datensatzes an und ergibt auch 0, wenn in der Spalte kein na vorhanden ist

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X