Em uma pergunta anterior, perguntei sobre ferramentas para editar arquivos CSV .
Gavin vinculou a um comentário no R Help de Duncan Murdoch, sugerindo que o Data Interchange Format é uma maneira mais confiável de armazenar dados que o CSV.
Para algumas aplicações, é necessário um sistema de gerenciamento de banco de dados dedicado. No entanto, para projetos de análise de dados em pequena escala, algo mais leve parece mais adequado.
Considere os seguintes critérios para avaliar um formato de arquivo:
- confiável : os dados inseridos devem permanecer fiéis ao que foi digitado; os dados devem abrir consistentemente em diferentes softwares;
- simples : seria bom se o formato do arquivo fosse fácil de entender e idealmente legível com um editor de texto simples; deve ser fácil escrever um programa simples para ler e escrever o formato.
- aberto : o formato deve estar aberto
- interoperável : o formato do arquivo deve ser suportado por muitos sistemas
Acho que os formatos de valores separados por tabulação e vírgula falham no critério de confiabilidade. Embora eu suponha que possa culpar os programas de importação e exportação em vez do formato de arquivo. Costumo me fazer pequenos ajustes nas opções
read.table
para impedir que algum caractere estranho interrompa o carregamento do quadro de dados.
Questões
- Qual formato de arquivo melhor atende a essas necessidades?
- O Data Interchange Format é uma alternativa melhor? ou tem seus próprios problemas?
- Existe algum outro formato preferível?
- Estou avaliando injustamente TSV e CSV? Existe um conjunto simples de dicas para trabalhar com esses arquivos que tornam o formato do arquivo mais confiável?
fonte
write.DIF()
por isso é um pouco de rua de mão única, eu tenho medo.Respostas:
Gostaria de saber se existe uma colisão de critérios aqui.
Uma reclamação sobre formatos de arquivo como Excel, SQL, etc. é que você precisa definir os tipos de dados com antecedência para que eles se comportem bem, o que é contrário ao critério "algo mais leve" (como eu entendo que sua restrição é mais demorada) relacionados do que computacionalmente).
Por outro lado, os critérios de que ele não estraga os dados ou permite que os dados sejam removidos exigem uma verificação de erro. A menos que você permita que o sistema decida automaticamente os tipos de dados (que é essencialmente onde o Excel está falhando com você), não há como comer e comer seu bolo.
OMI, dos dois, o segundo critério é mais importante. A integridade dos dados, uma vez violada, torna a análise difícil ou impossível. Observações perdidas ou valores inválidos (se não forem verificados corretamente) podem atrapalhar tudo.
No que diz respeito à DIF, o texto bruto real não é legível por humanos e seria difícil (IMO) para humanos inserir a entrada de dados.
Na IMO, você deve agitar os arquivos delimitados. Como mencionado acima nos comentários, a 'manipulação de dados' é principalmente a falha de um subconjunto de ferramentas que você está usando. Programas bem comportados não devem alterar arquivos delimitados. A maior fonte de distorção é um delimitador mal especificado. Por exemplo, se seus dados podem ter vírgulas, um CSV é inapropriado. Se houver guias, o TSV é inadequado. Para muitos programas (mas não todos), você pode especificar um delimitador alternativo. Por exemplo, eu usei o til (~) em alguns casos difíceis.
fonte
Com toda a seriedade, eu consideraria os arquivos RData criados pelo próprio R como ele se encaixa
Perto o suficiente para mim. Se por sistemas você quer dizer aplicativos em vez de sistema operacional, o último ponto é uma falha.
Ah, e o RData é eficiente, pois os arquivos agora são compactados por padrão (que costumava ser uma opção desativada por padrão).
fonte
dput()
fornece uma alternativa em texto sem formatação que funcionaria com o controle de versão. No entanto, um dos apelos do csv / tsv é que, quando eu compartilho um repositório com dados (digamos, para um artigo de jornal), as pessoas podem pegar os dados e analisá-los facilmente usando o software que quiserem.Em resposta à resposta de Dirk Eddelbuettel, sugiro usar o formato de arquivo HDF5 . É menos simples que o formato RData, ou você pode dizer, 'mais rico', mas certamente mais interoperável (pode ser usado em C, Java, Matlab, etc). Eu descobri que a E / S envolvendo arquivos HDF5 grandes é muito rápida.
fonte
Não sei ao certo por que o formato de texto fixo com os metadados apropriados não atende aos seus critérios. Não é tão simples de ler como um delimitador, mas você precisa de metadados para usar as informações de qualquer maneira. A tarefa de escrever a sintaxe para ler o programa depende simplesmente de quão grande e complicada é a estrutura do conjunto de dados. O SPSS e o Excel têm uma GUI para ajudar nessas tarefas.
Existem apenas dois erros nos arquivos CSV que encontrei:
(se você encontrou outros problemas, sinta-se à vontade para dar exemplos)
O Two é resolvido com um delimitador mais irregular, como sugerido pelo drnexus (um pipe (|) é um que eu já encontrei antes, mas um til (~) funciona tão bem quanto nenhum dos dois provavelmente será incluído nos campos de string.) O problema não é facilmente resolvido pelo software que você está usando, e ambos são problemas com a maneira como as pessoas escreveram os arquivos, não o software usado para ler os arquivos.
Também gostaria de dizer que concordo com o drnexus neste tópico e na resposta dele em seu outro tópico recente sobre a edição desses arquivos. Você parece estar reclamando do software usado (principalmente o Excel) e pedindo para armazenar dados em um formato compatível com o seu software mal comportado. Talvez a pergunta deva ser como fazer com que o Excel pare de formatar automaticamente os arquivos de texto sem formatação. Seus critérios confiáveis, como me parece, são um problema de software na leitura de arquivos de texto sem formatação. Não uso o R para gerenciamento de dados, mas não tive tempo de ler arquivos delimitados no SPSS, como você sugere.
Se os arquivos originais não foram gravados corretamente, o que faz com que você espere que algum software leia o arquivo com confiabilidade? E um formato de arquivo específico certamente não impedirá a gravação incorreta dos dados em qualquer tipo de arquivo que você escolher.
fonte
O problema comum com o formato de texto sem formatação é que ele não pode armazenar metadados. Como você define os dados ausentes? Como você define 1 = discordo totalmente, 2 = discordo, ... tipos de coisas no formato de texto sem formatação? Com o formato de texto sem formatação, você precisa usar outro documento para definir esses metadados. E não é fácil fazer isso em XML.
Às vezes, esse problema pode ser muito perturbador.
Minha solução é usar o formato de dados SPSS, que é independente e fácil de editar no SPSS. Sei que essa não é a resposta certa para sua pergunta, mas estou com o mesmo problema há muito tempo e essa é a minha solução atual.
fonte