Ich möchte die Anzahl der NA
Werte in einer Datenrahmenspalte zählen. Angenommen, mein Datenrahmen wird aufgerufen df
, und der Name der Spalte, die ich in Betracht ziehe, lautet col
. Ich habe mir Folgendes ausgedacht:
sapply(df$col, function(x) sum(length(which(is.na(x)))))
Ist dies ein guter / effizientester Weg, dies zu tun?
value
, außerNA
eine boolesche Funktion zu schreibenis.value
und dann den richtigensum(is.value(df$col))
Weg zu gehen, oder gibt es dafür eine präzisere direkte Syntax?sum(df$col==value,na.rm=FALSE)
macht den Trick.na.rm=TRUE
, weil sonst, wenndf$col
NAs enthält,sum
zurückkehrenNA
.Wenn Sie nach
NA
Zählungen für jede Spalte in einem Datenrahmen suchen, dann:sollte Ihnen eine Liste mit den Zählungen für jede Spalte geben.
Sollte die Daten gut in einem Datenrahmen ausgeben wie:
quelle
na_count$name<-rownames(na_count)
.na_count <-sapply(x, function(y) sum(is.na(y)))
ist eine kürzere Alternative.Probieren Sie die
colSums
Funktion ausquelle
Wenn Sie die Anzahl der NAs im gesamten Datenrahmen zählen möchten, können Sie diese auch verwenden
quelle
In der
summary()
Ausgabe zählt die Funktion auch dasNA
s, so dass man diese Funktion verwenden kann, wenn man die Summe vonNA
s in mehreren Variablen haben möchte .quelle
summary
Ausgabe, wenn sie für eine einzelne Spalte verwendet wird, verwendbar ist, während die Ausgabe von einem gesamten Datenrahmen Zeichen ist und die Anzahl schwierig zu extrahieren ist, wenn Sie sie später benötigen. Siehec(summary(mtcars))
.Eine einfache Methode, um die Anzahl der Nullen in jeder Spalte eines Datenrahmens zu zählen:
quelle
df %>% summarise_all(funs(sum(is.na(.))))
df %>% map_df(~sum(is.na(.)))
oder ohne dplyr asmap_df(~sum(is.na(df)))
Diese Form, leicht geändert von Kevin Ogoros:
Gibt NA-Zählungen als benanntes int-Array zurück
quelle
na_count <-function (x) lapply(x, function(y) sum(is.na(y)))
Eine schnelle und einfache Tidyverse-Lösung, um eine
NA
Zählung für alle Spalten zu erhalten, ist die Verwendung,summarise_all()
die meiner Meinung nach eine viel einfacher zu lesende Lösung darstellt als die Verwendung vonpurrr
odersapply
quelle
Versuche dies:
quelle
Die Antwort des Benutzers ist richtig, aber das sagt Ihnen nur die Anzahl der NA-Werte in der bestimmten Spalte des Datenrahmens, die Sie übergeben, um die Anzahl der NA-Werte für den gesamten Datenrahmen zu erhalten. Versuchen Sie Folgendes:
Das macht den Trick
quelle
apply(df, 2, function(x) sum(is.na(x)))
Ich habe eine CSV- Datei aus dem lokalen Verzeichnis gelesen . Der folgende Code funktioniert bei mir.
quelle
Ähnlich wie die Antwort von hute37, aber mit dem
purrr
Paket. Ich denke, dieser tidyverse Ansatz ist einfacher als die von AbiK vorgeschlagene Antwort.Hinweis: Die Tilde (
~
) erstellt eine anonyme Funktion. Und das '.' bezieht sich auf die Eingabe für die anonyme Funktion, in diesem Fall den data.framedf
.quelle
Sie können dies verwenden, um die Anzahl der NA oder Leerzeichen in jeder Spalte zu zählen
quelle
quelle