Eu quero contar o número de NA
valores em uma coluna de quadro de dados. Digamos que meu quadro de dados seja chamado df
e o nome da coluna que estou considerando seja col
. A maneira como inventei é a seguinte:
sapply(df$col, function(x) sum(length(which(is.na(x)))))
Essa é uma maneira boa / mais eficiente de fazer isso?
value
, além deNA
escrever uma função booleanais.value
e depois usarsum(is.value(df$col))
o caminho a seguir, ou existe uma sintaxe direta mais concisa para isso?sum(df$col==value,na.rm=FALSE)
faz o truque.na.rm=TRUE
, caso contrário, sedf$col
contém NAs,sum
retornaráNA
.Se você estiver procurando
NA
contagens para cada coluna em um quadro de dados, então:deve fornecer uma lista com as contagens para cada coluna.
Deverá gerar os dados adequadamente em um quadro de dados como:
fonte
na_count$name<-rownames(na_count)
.na_count <-sapply(x, function(y) sum(is.na(y)))
é uma alternativa mais curta.Experimente a
colSums
funçãofonte
Se você deseja contar o número de NAs em todo o quadro de dados, também pode usar
fonte
Na
summary()
saída, a função também conta osNA
s, para que você possa usar essa função se quiser a soma deNA
s em várias variáveis.fonte
summary
saída quando usada em uma única coluna é utilizável, enquanto a saída de um quadro de dados inteiro é caractere e as contagens são difíceis de extrair se você precisar delas mais tarde. Vejac(summary(mtcars))
.Uma maneira organizada de contar o número de nulos em todas as colunas de um quadro de dados:
fonte
df %>% summarise_all(funs(sum(is.na(.))))
df %>% map_df(~sum(is.na(.)))
ou sem dplyr comomap_df(~sum(is.na(df)))
Este formulário mudou ligeiramente do de Kevin Ogoros:
retorna contagens de NA como nomeado int array
fonte
na_count <-function (x) lapply(x, function(y) sum(is.na(y)))
Uma solução rápida e fácil do Tidyverse para obter uma
NA
contagem para todas as colunas é usar, osummarise_all()
que eu acho que torna muito mais fácil ler a solução do que usarpurrr
ousapply
fonte
Tente o seguinte:
fonte
A resposta do usuário rrs está correta, mas isso informa apenas o número de valores de NA na coluna específica do quadro de dados que você está passando para obter o número de valores de NA para todo o quadro de dados, tente o seguinte:
Isso faz o truque
fonte
apply(df, 2, function(x) sum(is.na(x)))
Eu li um arquivo csv do diretório local. O código a seguir funciona para mim.
fonte
Semelhante à resposta do hute37, mas usando o
purrr
pacote. Penso que esta abordagem ordenada é mais simples do que a resposta proposta por AbiK.Nota: o til (
~
) cria uma função anônima. E a '.' refere-se à entrada da função anônima, neste caso o data.framedf
.fonte
Você pode usar isso para contar o número de NA ou espaços em branco em todas as colunas
fonte
fonte