Dúvidas sobre dados faltantes (NA)

Boa tarde! As dúvidas a seguir foram enviadas por um aluno do nosso curso R para Ciência de Dados 1 e estamos colocando aqui pois a resposta pode ajudar outras pessoas.

Perguntas

A) Em quais situações são formados os NA e os NaN quando da importação de dados?

B) O NULL é aceito na criação do vetor, mas de fato não entra no vetor. Por que isso acontece? Por que não consigo inserir um NULL como um elemento do vetor?

C) Se NULL é vazio e é representado por 0, por que não consigo montar um vetor de 0 a 4 usando NULL:4?

D) É possível criar NA? Como? Porque “as.na” não funciona?

E) No código c(1:3, , 4:5, ,8:10) eu esperava que no espaço vazio ocorresse o NA. Por que não ocorreu?

F) No código data.frame(c(1:3, , 4:5, ,8:10)), eu esperava que espaço vazio gerasse uma linha no Data Frame. Por que isso não aconteceu? O mais bizarro é que não é tamanho 10 tampouco 8, o tamanho é 9.

1 curtida

A) Em quais situações são formados os NA e os NaN quando da importação de dados?

Na importação, os NAs em geral vêm das células vazias da tabela. Algumas funções de importação também permitem você especificar quais valores nos dados devem ser transformado em NA na importação.

O NULL não é gerado na importação. Ele é um valor especial utilizado na lógica de programação em R e na maioria das linguagens.

B) O NULL é aceito na criação do vetor, mas de fato não entra no vetor. Por que isso acontece? Por que não consigo inserir um NULL como um elemento do vetor?

O NULL representa, no R, a ausência de valor. Algumas funções podem receber esse valor em seus argumentos e têm um comportamento especial reservado para ele.

No caso da função c(), que cria vetores, ela simplesmente ignora os NULLs, como se eles fossem “posições vazias”. Isso pode ser útil se você estiver criando um vetor em um processo iterativo e, em alguns dos passos, não é gerado nenhum valor para ser guardado no vetor. Nesse caso, se você não quiser passar um NA para o vetor, você pode simplesmente passar NULL e então esse passo não seria contado no vetor.

C) Se NULL é vazio e é representado por 0, por que não consigo montar um vetor de 0 a 4 usando NULL:4?

O NULL não é representado por 0. O número 0 é um valor. O NULL é a ausência de qualquer tipo de valor.

D) É possível criar NA? Como? Porque “as.na” não funciona?

Sim. O nome NA é reservado no R. Basta fazer a <- NA e o objeto a será um NA.

E) No código c(1:3, , 4:5, ,8:10) eu esperava que no espaço vazio ocorresse o NA. Por que não ocorreu?

O código c(1:3, , 4:5, ,8:10) retorna o erro:

Error in c(1:3, , 4:5, , 8:10) : argument 2 is empty.

A função c() não permite passar um argumento vazio. Para criar um NA nessas posições, basta rodar: c(1:3, NA, 4:5, NA, 8:10).

F) No código data.frame(c(1:3, , 4:5, ,8:10)) , eu esperava que espaço vazio gerasse uma linha no Data Frame. Por que isso não aconteceu?

A explicação é análoga à do item E.

1 curtida