Quiero contar el número de NA
valores en una columna de marco de datos. Digamos que mi marco de datos se llama df
, y el nombre de la columna que estoy considerando es col
. La forma en que se me ocurrió es la siguiente:
sapply(df$col, function(x) sum(length(which(is.na(x)))))
¿Es esta una forma buena / más eficiente de hacer esto?
value
, aparte deNA
escribir una función booleanais.value
y luego usarsum(is.value(df$col))
el camino a seguir o ¿hay una sintaxis directa más concisa para esto?sum(df$col==value,na.rm=FALSE)
Hace el truco.na.rm=TRUE
, porque de lo contrario sidf$col
contiene NA,sum
volveráNA
.Si está buscando
NA
recuentos para cada columna en un marco de datos, entonces:debería darle una lista con los recuentos de cada columna.
Debería dar salida a los datos muy bien en un marco de datos como:
fuente
na_count$name<-rownames(na_count)
.na_count <-sapply(x, function(y) sum(is.na(y)))
Es una alternativa más corta.Prueba la
colSums
funciónfuente
Si desea contar el número de NA en todo el marco de datos, también puede usar
fuente
En la
summary()
salida, la función también cuenta losNA
s para poder usar esta función si desea la suma deNA
s en varias variables.fuente
summary
salida cuando se usa en una sola columna es utilizable, mientras que su salida de un marco de datos completo es de carácter y los recuentos son difíciles de extraer si los necesita más adelante. Verc(summary(mtcars))
.Una forma ordenada de contar el número de nulos en cada columna de un marco de datos:
fuente
df %>% summarise_all(funs(sum(is.na(.))))
df %>% map_df(~sum(is.na(.)))
ronroneo algo más corta como: o sin dplyr comomap_df(~sum(is.na(df)))
Esta forma, ligeramente cambiada de la de Kevin Ogoros:
devuelve NA cuenta como una matriz int
fuente
na_count <-function (x) lapply(x, function(y) sum(is.na(y)))
Una solución rápida y fácil de Tidyverse para obtener un
NA
recuento de todas las columnas es usar,summarise_all()
lo que creo que hace que sea una solución mucho más fácil de leer que usarpurrr
osapply
fuente
Prueba esto:
fuente
La respuesta del usuario rrs es correcta, pero eso solo le indica el número de valores de NA en la columna particular del marco de datos que está pasando para obtener el número de valores de NA para todo el marco de datos. Intente esto:
Esto hace el truco
fuente
apply(df, 2, function(x) sum(is.na(x)))
Leí un archivo csv del directorio local. El siguiente código funciona para mí.
fuente
Similar a la respuesta de hute37 pero usando el
purrr
paquete. Creo que este enfoque tidyverse es más simple que la respuesta propuesta por AbiK.Nota: tilde (
~
) crea una función anónima. Y el '.' se refiere a la entrada para la función anónima, en este caso el data.framedf
.fuente
Puede usar esto para contar el número de NA o espacios en blanco en cada columna
fuente
fuente