| ID | Idade | Sexo | Colesterol | Glicose | Cidade |
|---|---|---|---|---|---|
| 1000 | 46 | female | 203 | 82 | Buckingham |
| 1001 | 29 | female | 165 | 97 | Buckingham |
| 1002 | 58 | female | 228 | 92 | Buckingham |
| 1003 | 67 | male | 78 | 93 | Buckingham |
Organizando Dados em Planilhas
Boas práticas de organização de dados
O arquivos de dados de uma pesquisa
Toda pesquisa gera um conjunto de dados que precisam ser armazenados de alguma forma. Via de regra, são armazenados em formato de tabelas, nas quais cada variável é representada por uma coluna e cada participante da pesquisa por uma linha. A primeira linha contém os nomes das variáveis; as linhas seguintes são os dados de cada participante. O banco de dados que usamos neste livro — pacientes.csv — segue exatamente esse formato:
Existem vários formatos para armazenar tabelas como essa. O mais comum é o formato de planilhas eletrônicas: o Excel usa arquivos .xlsx, o Numbers da Apple usa .numbers, o LibreOffice usa .ods. O problema é que cada formato só é plenamente legível pelo software que o criou.
Um dos formatos mais comuns para armazenar os dados de uma pesquisa é o csv (comma-separated values — valores separados por vírgula), com extensão .csv. Um arquivo csv é texto puro: nada mais que valores separados por vírgulas, um participante por linha. Se abrirmos o arquivo pacientes.csv num editor de texto simples, como o Bloco de Notas do Windows ou o TextEdit do Mac, vemos apenas isso:
id,colesterol,glicose,hdl,idade,sexo,altura,peso,cidade
1000,203,82,56,46,female,157.48,54.88,Buckingham
1001,165,97,24,29,female,162.56,98.88,Buckingham
1002,228,92,37,58,female,154.94,116.12,Buckingham
1003,78,93,12,67,male,170.18,53.98,Buckingham
Sem formatação, sem cores, sem fórmulas escondidas — apenas dados. Qualquer software lê esse formato: R, Python, SPSS, Stata, Excel, em qualquer sistema operacional, sem depender de versão ou licença. É o formato de intercâmbio universal para dados de pesquisa.
A simplicidade do CSV é a sua maior força — e também a sua limitação. Um arquivo CSV é apenas texto: linhas e colunas separadas por um delimitador. Qualquer software consegue abri-lo, qualquer linguagem consegue lê-lo. Mas essa simplicidade tem um custo: o CSV não carrega nenhuma informação sobre o significado dos dados. Ele não sabe que a coluna sexo contém valores 1 e 2 que representam “masculino” e “feminino”. Não sabe que glicose é medida em mg/dL. Não sabe quais valores devem ser tratados como ausentes. O CSV guarda os dados, mas não os metadados.
Formatos de softwares estatísticos como .sav (SPSS) e .dta (Stata) funcionam de maneira diferente. Além dos dados em si, esses arquivos armazenam metadados: o rótulo descritivo de cada variável (por exemplo, "Glicemia de jejum (mg/dL)"), os rótulos de cada valor categórico (1 = masculino, 2 = feminino), os valores definidos como ausentes e até o formato de exibição. Em outras palavras, o dicionário de variáveis já vem embutido no arquivo — dados e documentação viajam juntos.
Para importar esses formatos mais ricos sem perder os metadados, o R oferece o pacote haven e o Python oferece o pacote pyreadstat. Ambos leem os dados e os metadados de uma só vez: ao abrir um .sav com haven::read_sav(), cada coluna já chega com seu rótulo e seus valores codificados. Isso evita aquele passo manual de consultar um dicionário separado para entender o que cada variável significa.
Nada disso significa que você deva abandonar o CSV — ele continua sendo o formato mais comum para armazenamento. Mas é importante saber que, ao escolher CSV, você está abrindo mão dos metadados. O dicionário de variáveis precisa existir em algum lugar — só não vai ser dentro do arquivo.
O nome csv vem de comma-separated values — valores separados por vírgula. Mas nem todo CSV usa vírgula como separador. Na prática, existem três separadores comuns:
- Vírgula (
,): o padrão original, usado em países de língua inglesa.
- Ponto e vírgula (
;): comum no Brasil e em outros países que usam vírgula como separador decimal.
- Tabulação (
Tab): usado em arquivos.tsv, mas às vezes com extensão.csv.
O motivo dessa variação é o separador decimal. Em inglês, o número três e meio se escreve 3.5 (com ponto). Em português, se escreve 3,5 (com vírgula). Se o arquivo usasse vírgula como separador decimal e como separador de colunas, o resultado seria uma confusão. Por isso, quando os decimais usam vírgula, o separador de colunas precisa ser outro — geralmente ponto e vírgula. Nesse exemplo abaixo a vírgula representa a separador de decimais e o ponto e virgula o separador dos valores
id;colesterol;glicose
1000;203,5;82,3
Antes de importar um csv, abra o arquivo em um editor de texto simples (Bloco de Notas, TextEdit) e verifique: qual é o separador de colunas? E qual é o separador decimal? No R, a função read.csv() espera vírgula e ponto decimal; read.csv2() espera ponto e vírgula e vírgula decimal.
A história
Em 2010, dois economistas de Harvard — Carmen Reinhart e Kenneth Rogoff — publicaram um artigo influente intitulado Growth in a Time of Debt. A conclusão era contundente: países com dívida pública acima de 90% do PIB apresentavam crescimento econômico negativo (média de −0,1%). O artigo tornou-se rapidamente uma das referências mais citadas no debate global sobre austeridade. Foi invocado no orçamento federal dos Estados Unidos, nos cortes de gastos do Reino Unido e nas políticas de austeridade da zona do euro após a crise de 2008 (1).
Em abril de 2013, Thomas Herndon — um aluno de mestrado da Universidade de Massachusetts Amherst — tentou replicar os resultados como exercício de aula. Não conseguiu. Quando Reinhart e Rogoff gentilmente compartilharam sua planilha original do Excel, Herndon descobriu o que se tornaria um dos escândalos metodológicos mais célebres da economia moderna (2).
O problema tinha três camadas. Primeiro, ao calcular a média de crescimento para a categoria “>90% de dívida”, a fórmula do Excel selecionava as células das linhas 30 a 44 em vez de 30 a 49 — excluindo acidentalmente cinco países (Austrália, Áustria, Bélgica, Canadá e Dinamarca) simplesmente porque estavam no topo da lista em ordem alfabética. Segundo, Reinhart e Rogoff haviam excluído deliberadamente dados da Austrália, do Canadá e da Nova Zelândia no pós-guerra sem justificativa explícita — países que, aliás, cresceram durante períodos de dívida alta. Terceiro, a metodologia de ponderação tratava cada país como uma única observação, independentemente de quantos anos aparecia na categoria — assim, os 19 anos do Reino Unido tinham o mesmo peso que o único ano da Nova Zelândia (que, convenientemente, registrou crescimento negativo naquele ano) (2).
Quando Herndon corrigiu os três problemas, a média de crescimento para países com dívida acima de 90% do PIB não era −0,1% — era +2,2%. A conclusão central do artigo original evaporava.
O erro não estava na teoria econômica, nem na qualidade dos dados. Estava na planilha. Uma fórmula que não selecionou todas as células. Dados organizados de forma que o erro fosse invisível. Nenhuma verificação automática. O episódio demonstra que a organização dos dados não é um detalhe técnico — é uma decisão metodológica com consequências reais.
A regra fundamental
O erro de Reinhart e Rogoff não foi um acidente isolado — foi consequência de usar a planilha para algo que ela não deveria fazer. A fórmula que excluiu cinco países era invisível: nenhum colega, nenhum revisor e nenhum leitor poderia ter notado o problema olhando para os resultados. O erro só apareceu quando alguém abriu a planilha e inspecionou célula por célula.
A lição é direta: planilhas servem para armazenar dados, não para analisar. A análise — cálculos, transformações, modelos, gráficos — deve ser feita em software estatístico com código documentado: R, Python, SPSS, Stata ou qualquer ferramenta em que cada passo fique registrado e seja reproduzível. Num script em R ou Python, o erro de Reinhart e Rogoff seria uma linha de código legível, revisável e rastreável — não uma fórmula escondida numa célula.
O formato que faz a ponte entre a planilha e o software de análise é o CSV (comma-separated values — valores separados por vírgula). Um arquivo .csv é texto puro: qualquer software lê, em qualquer sistema operacional, sem depender de versão ou licença. Não tem formatação oculta, não converte nomes de genes em datas, não esconde fórmulas em células.
Use o Excel (ou Google Sheets) apenas para organizar os dados. Salve em formato CSV. Faça toda a análise em software estatístico com código reproduzível. Nunca use fórmulas em planilhas eletrônicas para gerar resultados de pesquisa.
Por que a organização importa
Se a planilha é apenas o lugar onde os dados ficam guardados, a forma como os organizamos determina se o software de análise vai conseguir lê-los sem problemas. Pesquisadores passam até 80% do tempo de uma análise com limpeza e reorganização de dados — quase sempre porque os dados foram organizados para o olho humano, não para o computador (3,4).
A boa notícia é que existem princípios claros, baseados em décadas de experiência, que tornam qualquer planilha mais robusta e mais fácil de importar para R, Python ou qualquer outro software. Esses princípios podem ser resumidos numa ideia central: organize os dados para o computador, não para o olho humano.
Tidy data: os três princípios
O conceito de tidy data (dados arrumados), formalizado em 2014, fornece uma estrutura simples e poderosa para organizar dados tabulares. A ideia é análoga ao conceito de terceira forma normal em bancos de dados relacionais, mas traduzida para a linguagem da estatística (3).
Dados tidy obedecem a três regras:
| Princípio | O que significa | Exemplo de violação |
|---|---|---|
| 1. Cada variável é uma coluna | Todas as medições do mesmo atributo (ex: peso) ficam numa única coluna | Peso de homens e peso de mulheres em colunas separadas |
| 2. Cada observação é uma linha | Todos os atributos de um mesmo sujeito (ex: paciente 1001) ficam numa única linha | Mesmo paciente em duas linhas por estar em dois centros |
| 3. Cada tipo de unidade observacional é uma tabela | Dados de naturezas diferentes (ex: pacientes e exames) ficam em tabelas separadas | Misturar dados de pacientes e dados de hospitais na mesma tabela |
O nosso banco de dados pacientes.csv — que vimos no início do capítulo — é um exemplo de dados tidy: cada linha é um paciente, cada coluna é uma variável, e há uma única tabela com um tipo de unidade observacional (pacientes).
Dados messy: os cinco problemas comuns
A maioria dos dados reais não é tidy. Os cinco problemas mais comuns, com seus remédios, são (3):
| Problema | Exemplo | Remédio |
|---|---|---|
| Cabeçalhos de coluna são valores, não nomes | Colunas ‘semana_1’, ‘semana_2’, … em vez de uma coluna ‘semana’ e outra ‘valor’ | Pivotar (pivot_longer): transformar colunas em linhas |
| Múltiplas variáveis em uma única coluna | Coluna ‘m1524’ que codifica sexo masculino + faixa etária 15–24 juntos | Separar (separate): dividir a coluna em duas variáveis |
| Variáveis armazenadas em linhas e colunas | Uma coluna ‘elemento’ com valores ‘tmax’ e ‘tmin’ que são variáveis diferentes | Pivotar para mais largo (pivot_wider): linhas viram colunas |
| Múltiplos tipos de unidade na mesma tabela | Dados do hospital e do paciente misturados na mesma planilha | Separar em tabelas distintas com chave de ligação (ID) |
| Uma unidade espalhada por múltiplas tabelas | Dados de janeiro num arquivo, fevereiro noutro, sem estrutura consistente | Empilhar (bind_rows) com estrutura padronizada |
Boas práticas em planilhas
As recomendações a seguir — baseadas em experiência acumulada e erros reais — tornam qualquer planilha mais robusta, mais reproduzível e menos propensa aos tipos de erro que afundaram Reinhart e Rogoff (4).
1. Seja consistente
A primeira regra é a mais simples e a mais violada: seja consistente. Se a variável sexo é codificada como female, use sempre female — nunca Female, fem, F ou feminino no meio do banco. Se as datas estão em formato YYYY-MM-DD, mantenha esse formato em todas as células. Se os valores ausentes são codificados como NA, use sempre NA — nunca -999, célula vazia ou a palavra “missing” (4).
A inconsistência é invisível para quem digita e devastadora para quem analisa. Um simples espaço extra (male vs. male) cria duas categorias diferentes para o software.
2. Escolha bons nomes de variáveis
Nomes de variáveis devem ser curtos, significativos e legíveis por máquina. Na prática, isso significa: sem espaços, sem acentos, sem caracteres especiais, preferencialmente em snake_case (4).
| Bom nome | Nome a evitar | Problema |
|---|---|---|
| peso_kg | Peso (kg) | Parênteses e espaços |
| pressao_sistolica | Pressão Sistólica | Acentos e maiúsculas |
| data_coleta | Data da Coleta | Espaços e preposição |
| glicose_jejum | Glicose em jejum (mg/dL) | Espaços, parênteses e unidade |
| sexo | Sexo do Paciente | Redundante — óbvio pelo contexto |
| idade_anos | Idade (em anos completos) | Parênteses e redundância |
Nosso banco de dados segue essa prática: colesterol, glicose, hdl, peso, altura, sistolica, diastolica, cintura, quadril. Nomes curtos, sem espaços, sem acentos.
3. Datas em formato ISO
Datas devem ser registradas no formato YYYY-MM-DD (ISO 8601): 2024-03-15, não 15/03/2024 nem March 15, 2024. Esse formato evita a confusão entre dia e mês (o que significa 03/04/2024?), é ordenável cronologicamente como texto e é reconhecido universalmente por software estatístico (4).
O Excel armazena datas internamente como números (dias desde uma data de referência) e pode reformatar datas silenciosamente ao abrir um arquivo. Pior: em algumas versões, nomes de genes como OCT4 e MARCH1 são convertidos automaticamente em datas. Um estudo encontrou que cerca de 20% dos artigos com listas de genes em arquivos suplementares continham erros de conversão de datas (4). A recomendação é formatar a coluna como “Texto” antes de digitar as datas.
4. Sem células vazias
Toda célula deve conter um valor. Se o dado está ausente, use um código explícito — preferencialmente NA. Nunca deixe a célula vazia, porque o software não consegue distinguir entre “dado ausente” e “esqueci de preencher”. Nunca use códigos numéricos como -999 ou 0 para representar ausência, pois podem ser confundidos com valores reais (4).
5. Uma coisa por célula
Cada célula deve conter uma única informação. Se a posição na placa é 13-A01, é melhor ter três colunas: placa = 13, linha = A, coluna = 01. Se o peso inclui unidade (45 g), separe em peso = 45 e documente a unidade no dicionário de dados (4).
6. Faça um retângulo
Os dados devem formar um retângulo: sujeitos nas linhas, variáveis nas colunas, uma única linha de cabeçalho com os nomes das variáveis. Sem tabelas espalhadas pela planilha, sem linhas de título mescladas, sem subtotais intercalados, sem múltiplas tabelas na mesma aba (4).
| id | idade | sexo | colesterol | glicose | cidade |
|---|---|---|---|---|---|
| 1000 | 46 | female | 203 | 82 | Buckingham |
| 1001 | 29 | female | 165 | 97 | Buckingham |
| 1002 | 58 | female | 228 | 92 | Buckingham |
| 1003 | 67 | male | 78 | 93 | Buckingham |
| 1005 | 64 | male | 249 | 90 | Buckingham |
7. Crie um dicionário de dados
Todo banco de dados deveria ser acompanhado de um dicionário (ou codebook) que descreva cada variável: nome, significado, unidade, tipo, valores possíveis e regras de codificação. O dicionário é um documento separado — nunca dentro da planilha de dados (4).
| Variável | Descrição | Tipo | Unidade | Valores |
|---|---|---|---|---|
| id | Identificador único do paciente | Numérica (ID) | — | 1000–1402 |
| idade | Idade em anos completos | Numérica contínua | anos | 19–92 |
| sexo | Sexo biológico | Categórica nominal | — | female, male |
| colesterol | Colesterol total em jejum | Numérica contínua | mg/dL | 78–443 |
| glicose | Glicemia em jejum | Numérica contínua | mg/dL | 48–385 |
| hdl | HDL-colesterol | Numérica contínua | mg/dL | 12–120 |
| peso | Peso corporal | Numérica contínua | kg | 27,2–159,7 |
| altura | Estatura | Numérica contínua | cm | 130,8–195,6 |
| biotipo | Classificação do biotipo corporal | Categórica ordinal | — | small, medium, large |
| sistolica | Pressão arterial sistólica | Numérica contínua | mmHg | 82–250 |
| cidade | Cidade de residência | Categórica nominal | — | Buckingham, Louisa |
8. Sem cálculos no arquivo de dados brutos
Esta é a regra fundamental do capítulo aplicada ao arquivo: o arquivo de dados primário deve conter apenas dados — sem fórmulas, sem médias calculadas, sem gráficos embutidos. Toda análise vai para o código (R, Python, etc.), nunca para células do Excel. O arquivo original deve ser tratado como um registro imutável — o equivalente a um caderno de laboratório (4).
9. Não use cores como dados
É tentador destacar com cores as linhas com problemas, marcar outliers em vermelho ou indicar o sexo dos pacientes com azul e rosa. Mas cores não são dados — são formatação que se perde ao exportar para CSV e que nenhum software estatístico consegue ler automaticamente. Se uma informação precisa ser registrada, crie uma coluna para ela (ex: outlier = TRUE/FALSE) (4).
10. Salve em formato CSV
Como vimos no início do capítulo, o CSV é o formato que faz a ponte entre a planilha e o software de análise. Sempre mantenha uma cópia dos dados em CSV (ou TSV). Esses formatos são texto puro — abertos, universais, legíveis por qualquer software e imunes às armadilhas de formatação do Excel (4).
Verificando nosso banco de dados
Vamos aplicar os princípios ao nosso próprio banco de dados e verificar se ele atende às boas práticas:
| Critério | Resultado | Status |
|---|---|---|
| Formato retangular? | Sim — 403 linhas × 18 colunas | OK |
| Uma linha por observação? | Sim — cada linha é um paciente (n = 403) | OK |
| Nomes sem espaços/acentos? | Sim — todos em snake_case (ex: glicohemoglobina, time.ppn) | OK |
| Valores ausentes codificados? | Sim — NA usado para ausência (51 valores ausentes em 12 variáveis) | OK |
| Uma coisa por célula? | Sim — cada célula contém um único valor | OK |
| Sem cálculos embutidos? | Sim — apenas dados brutos, sem fórmulas | OK |
| Formato CSV? | Sim — arquivo .csv com separador vírgula | OK |
O nome time.ppn usa ponto em vez de underscore — uma convenção mista que poderia gerar inconsistência. O ideal seria time_ppn para manter o padrão snake_case. Pequenas inconsistências como essa são comuns em dados reais e ilustram por que a padronização desde o início é tão importante.
Voltando a Reinhart e Rogoff
Cada princípio deste capítulo — dados em formato retangular, nomes consistentes, CSV como formato de intercâmbio, análise em código — teria evitado ou tornado visível o erro que mudou a política econômica de países inteiros. A fórmula que excluiu cinco países não existiria se a análise estivesse em R ou Python. A exclusão de dados sem justificativa teria sido documentada num dicionário de dados. A ponderação enviesada seria transparente num script reproduzível. E o erro teria sido detectado antes da publicação se os dados e o código estivessem disponíveis para replicação — como eventualmente Thomas Herndon fez (2).
Resumo do capítulo
| Conceito | Definição | Por que importa |
|---|---|---|
| Tidy data | Cada variável é uma coluna; cada observação é uma linha; cada unidade é uma tabela | Facilita análise, visualização e compartilhamento |
| Consistência | Mesmo código para a mesma informação em todo o banco (NA, female, YYYY-MM-DD) | Evita categorias duplicadas e erros de parsing |
| Nomes de variáveis | Curtos, significativos, sem espaços/acentos, em snake_case | Facilita programação e reduz erros de digitação |
| Datas (ISO 8601) | YYYY-MM-DD — formato universal, ordenável, sem ambiguidade dia/mês | Evita confusão 03/04 = março 4 ou 3 de abril? |
| Células vazias | Nunca deixar vazio; usar NA para dados ausentes; nunca usar -999 ou 0 | Permite distinguir ausência intencional de erro de digitação |
| Retângulo | Sujeitos nas linhas, variáveis nas colunas, uma única linha de cabeçalho | Todo software estatístico espera dados nesse formato |
| Dicionário de dados | Documento separado descrevendo cada variável: nome, tipo, unidade, valores | Permite que qualquer pessoa entenda e reproduza a análise |
| Dados brutos intocáveis | O arquivo primário contém apenas dados — sem fórmulas, sem gráficos, sem cores como informação | Preserva a integridade dos dados originais — como um caderno de laboratório |
| Formato CSV | Manter cópia em texto simples — formato aberto, universal e imune ao Excel | Garante que os dados sobrevivam a qualquer mudança de software |
Este capítulo apresentou como organizar dados para que sejam analisáveis e reproduzíveis. No próximo capítulo, usaremos esses dados bem organizados para criar visualizações — gráficos que revelam padrões, comunicam resultados e, quando mal feitos, enganam.