sodio - Determine la cantidad de valores de NA en una columna
valores normales de sodio y potasio (11)
Quiero contar el número de valores de NA
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?
En el resultado de summary()
, la función también cuenta las NA
, por lo que se puede usar esta función si se quiere la suma de NA
en varias variables.
Estás pensando demasiado en el problema:
sum(is.na(df$col))
Esta forma, ligeramente cambiada de la de Kevin Ogoros:
na_count <-function (x) sapply(x, function(y) sum(is.na(y)))
devuelve NA cuenta como named int array
La respuesta del usuario es correcta, pero eso solo le dice 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. Pruebe esto:
apply(<name of dataFrame>, 2<for getting column stats>, function(x) {sum(is.na(x))})
Esto hace el truco
Leí un archivo csv del directorio local. El siguiente código funciona para mí.
# to get number of which contains na
sum(is.na(df[, c(columnName)]) # to get number of na row
# to get number of which not contains na
sum(!is.na(df[, c(columnName)])
#here columnName is your desire column name
Prueba esto:
length(df$col[is.na(df$col)])
Pruebe la función colSums
df <- data.frame(x = c(1,2,NA), y = rep(NA, 3))
colSums(is.na(df))
#x y
#1 3
Puede usar esto para contar el número de NA o espacios en blanco en cada columna
colSums(is.na(data_set_name)|data_set_name == '''')
Si busca recuentos de NA
para cada columna en un marco de datos, entonces:
na_count <-sapply(x, function(y) sum(length(which(is.na(y)))))
debería darle una lista con los recuentos de cada columna.
na_count <- data.frame(na_count)
Debe mostrar los datos muy bien en un marco de datos como:
----------------------
| row.names | na_count
------------------------
| column_1 | count
Si está buscando contar el número de NA en el marco de datos completo, también podría usar
sum(is.na(df))
Una forma ordenada de contar el número de nulos en cada columna de un marco de datos:
library(tidyverse)
library(purrr)
df %>%
map_df(function(x) sum(is.na(x))) %>%
gather(feature, num_nulls) %>%
print(n = 100)