Capítulo 11 Checagem dos dados
No tutorial abaixo vamos usar dados de avistamento de aves em fisionomias de cerrado. Baixem o arquivo contendo esses dados (https://github.com/LABOTAM/IntroR/blob/main/dados/aves_cerrado.csv) para a sua pasta de trabalho.
Vamos praticar neste tutorial o uso de funções que nos mostram a estrutura e resumo dos dados. Já vimos como utilizar essas funções na parte I deste livro.
-
str()
- mostra a estrutura do objeto dos dados; -
head()
etail()
- mostra a cabeça ou a cauda da sua tabela de dados, respectivamente; -
summary()
- faz um resumo de todas as variáveis nos seus dados.
Vamos começar importando os dados ao R:
## Lendo a planilha com read.table
<- read.table("aves_cerrado.csv", row.names = 1, header = T, sep = ";", dec = ",", as.is = T, na.strings = c("NA", "", "NULL")) avesc
Repare no argumento na.strings
da função read.table()
.
Ele é importante na importação de dados pois garante a codificação de valores ausentes usando a constante lógica NA
do R.
Se você não definir isso, o padrão é reconhecer apenas células que tenham o texto NA como valor faltante.
Veja também o uso do argumento as.is = TRUE
, que indica que não se deve converter colunas de texto em fatores (ou você pode usar o argumento stringsAsFactors
para isso; este mesmo argumento é utilizado também na função data.frame()
).
Vamos ver as primeiras 10 linhas do objeto avesc
:
head(avesc, 10)
fisionomia | urubu | carcara | seriema | |
---|---|---|---|---|
Ce1 | Ce | 5 | 18 | 6 |
Ce2 | Ce | 7 | 7 | 6 |
Ce3 | Ce | 5 | 14 | 4 |
Ce4 | Ce | 3 | 12 | 5 |
Ce5 | Ce | 4 | 16 | 4 |
Ce6 | Ce | NA | 20 | NA |
Ce7 | Ce | 6 | 19 | 4 |
Ce8 | Ce | 4 | 21 | 10 |
Ce9 | Ce | 2 | 11 | 6 |
Ce10 | Ce | 5 | 9 | 7 |
Vamos criar uma cópia para usarmos depois.
<- avesc aves2
É sempre bom verificar se os dados foram importados corretamente.
É sempre um bom procedimento checarmos as dimensões do objeto com a função dim()
, primeiras e últimas linhas e colunas do objeto com funções head()
e tail()
respectivamente
dim(avesc) # a dimensao do objeto (linhas e colunas)
## [1] 60 4
head(avesc, 3) # a cabeca do objeto (tres primeiras linhas)
fisionomia | urubu | carcara | seriema | |
---|---|---|---|---|
Ce1 | Ce | 5 | 18 | 6 |
Ce2 | Ce | 7 | 7 | 6 |
Ce3 | Ce | 5 | 14 | 4 |
tail(avesc, 3) # a cauda do objeto (tres ultimas linhas)
fisionomia | urubu | carcara | seriema | |
---|---|---|---|---|
CL18 | CL | 12 | 6 | 7 |
CL19 | CL | 18 | 5 | 4 |
CL20 | CL | 19 | 4 | 4 |
nrow(avesc), ] # ultima linha avesc[
fisionomia | urubu | carcara | seriema | |
---|---|---|---|---|
CL20 | CL | 19 | 4 | 4 |
Parece que está tudo certo! Vamos checar a estrutura do objeto:
# mostra a estrutura do data.frame
str(avesc)
## 'data.frame': 60 obs. of 4 variables:
## $ fisionomia: chr "Ce" "Ce" "Ce" "Ce" ...
## $ urubu : int 5 7 5 3 4 NA 6 4 2 5 ...
## $ carcara : int 18 7 14 12 16 20 19 21 11 9 ...
## $ seriema : int 6 6 4 5 4 NA 4 10 6 7 ...
Reparem que há uma variável de texto (chr
) e três variáveis de números inteiros (int
).
Próximo passo é sempre checar um sumário estatístico das variáveis presentes no objeto usando a função summary()
:
# mostra um resumo da variacao nas colunas
summary(avesc)
fisionomia | urubu | carcara | seriema | |
---|---|---|---|---|
Length:60 | Min. : 2.00 | Min. : 3.00 | Min. : 2.000 | |
Class :character | 1st Qu.: 7.00 | 1st Qu.: 5.50 | 1st Qu.: 4.000 | |
Mode :character | Median :12.00 | Median : 9.00 | Median : 5.000 | |
NA | Mean :11.93 | Mean :10.25 | Mean : 5.345 | |
NA | 3rd Qu.:16.50 | 3rd Qu.:14.00 | 3rd Qu.: 6.000 | |
NA | Max. :22.00 | Max. :24.00 | Max. :12.000 | |
NA | NA’s :1 | NA’s :1 | NA’s :2 |
Há indicação de presença de valores NA
nas variáveis numéricas, que são valores faltantes.