Do Ficheiro à Memória

Desenho Experimental e Análise Avançada de Dados Ecológicos

João O. Santos

ISPA

Do Campo ao R

Fluxo de dados: recolha no campo, registo numa folha de cálculo, importação do ficheiro para a memória do R e execução do script; o script e os dados permitem recriar os resultados.

Antes de analisar, garantam que o R está a ler o mesmo que vocês vêem.

A Cozinha do R

ficheiro no disco = despensa · objectos na memória = taças na bancada

script = receita · R = cozinheiro

consola = instruções dadas na hora · sessão = bancada de trabalho

Os objectos na memória são temporários. Os ficheiros no disco permanecem.

Repetir a Receita

Ler um ficheiro não consome os dados: podemos importá-lo quantas vezes precisarmos.

Nestes exemplos, executar o script é rápido. Com os dados originais e uma boa receita, recriamos as tabelas, os gráficos e os modelos.

Guardamos os resultados finais quando precisamos de os comunicar; não dependemos de uma sessão antiga para continuar.

O original não se altera. Trabalhamos numa cópia e documentamos as alterações.

Onde Está o Ficheiro?

getwd()

getwd() mostra a pasta de trabalho. Descarregar um ficheiro não o coloca na pasta do repositório.

Ler Um CSV

Descarreguem manatees.csv e o ficheiro tabulado. Substituam os caminhos de exemplo pelos caminhos dos ficheiros que escolheram, como em Organizar Dados em Tabelas.

caminho_csv <- "C:/.../manatees.csv"
caminho_tsv <- "C:/.../lobsters-2016.tsv"
file.exists(caminho_csv)
file.exists(caminho_tsv)
dados <- read.csv(caminho_csv)
head(dados)
str(dados)

vírgula · cabeçalho · uma linha por registo

Antes de Confiar

readLines(caminho_tsv, n = 2)

Olhem para as primeiras linhas em bruto. Os separadores não se veem bem no ecrã.

Separador ≠ Vírgula

\t · ; · vírgula decimal

Se todas as colunas aparecerem coladas, o problema é quase sempre o separador.

Um Ficheiro Tabulado

lagostas <- read.delim(caminho_tsv)
names(lagostas)

Os nomes mudaram. Pounds(M) passou a Pounds.M.. Isso é o R a tornar os nomes válidos.

Nomes ao Importar

espaços · parênteses · barras → pontos

Anotem a transformação. Quem escreve o código depois precisa dela.

Ficheiro Não Encontrado

caminho errado · pasta errada · maiúsculas e minúsculas

Se file.exists() devolver FALSE, não mudem nomes ao acaso. Confirmem o caminho.

Guardar Uma Cópia

ficheiro_copia <- "C:/.../manatees-copia.csv"
write.csv(dados, ficheiro_copia, row.names = FALSE)

Escolham outro nome para a cópia. row.names = FALSE evita uma coluna extra com números de linha.

Verificar a Exportação

reimportado <- read.csv(ficheiro_copia)
dim(dados)
dim(reimportado)
names(dados)
names(reimportado)
head(dados)
head(reimportado)

Comparem as dimensões, os nomes e algumas linhas do original e da cópia reimportada.

Exercício Um

15 minutos · pares

Usem lobsters-2016.tsv:

  1. leiam o ficheiro com read.delim();
  2. confirmem o número de linhas e de colunas com dim();
  3. identifiquem a coluna de anos e a coluna de toneladas;
  4. escrevam que nomes mudaram ao importar.

Se algum número parecer estranho, voltem às primeiras linhas em bruto.

Exercício Dois

20 minutos · pares

Usem bryozoan_raw.csv, com dados de duas espécies de briozoários, estádios, corridas e colunas logarítmicas:

  1. leiam o ficheiro com read.csv();
  2. usem str() e table() para ver os estádios das duas espécies;
  3. confirmem que as colunas logarítmicas são numéricas;
  4. escrevam a frase: o que é uma linha deste ficheiro?

Uma linha é um indivíduo, uma corrida ou uma medição repetida? A resposta muda o que podem contar.

Antes de Exportar

  • O original continua intacto?
  • As transformações estão escritas no script?
  • O novo ficheiro tem outro nome e outra pasta?

Próximo Passo

campo → ficheiro → memória → análise → resultado recriável

Importação e Exportação de Dados

Limpeza de Dados

Voltar às aulas DEAADE