Melhor maneira de simplesmente armazenar dados para análise estatística em R [fechado]


12

Estou usando arquivos de texto para armazenar meus dados para o R sem problemas há algum tempo. Porém, para um projeto recente, os tamanhos dos arquivos estão ficando grandes demais para serem manipulados pelos arquivos de texto bruto. Qual é a melhor alternativa simples?


5
De que maneira os arquivos de texto estão ficando muito grandes? Você tem medo da integridade deles? Não é possível abri-los em outro software? Eles são muito lentos para carregar? Grande demais para o seu disco rígido (laptop?)?
— Gala

3
+1 O gerenciamento de dados à medida que os projetos crescem é um problema universal na análise de dados (e dificilmente é específico R). A preocupação fundamental é com a integridade dos dados e não com o tamanho do arquivo: propor alguma forma de compactação apenas obscurece isso em vez de resolvê-lo.
— whuber

Acima de um determinado tamanho, txt simplesmente não parece funcionar. Eu posso adicionar os dados extras ao arquivo txt e carregá-los no R, mas os dados extras não estão em R. suspeito como meu projeto cresce eu vou acabar com as mesmas questões de novo).
— Toy Molto

Você precisa nos contar mais sobre seus dados, não existe o "melhor caminho para qualquer tipo de dados".
— Zx8754

Você quer dizer isso read.tableou read.csvestá falhando silenciosamente? Você tem certeza absoluta de que não possui vários arquivos por aí e algum erro de codificação (caminho errado, nome de arquivo errado etc.)? Apenas para corrigir idéias, você também pode nos dar uma idéia de quantas variáveis ​​e quantos registros você está lidando aproximadamente.
— Gala

Respostas:


10

A abordagem R padrão é usar savee load. Se você executar o saveseu quadro de dados após importá-lo e anotá-lo, poderá especificar compress=TRUEe ficará surpreso com a compactação e o loadtempo rápido . Isso funciona especialmente bem se o tamanho do objeto for menor que cerca de 400 MB. Caso contrário, confira algumas das sugestões acima, ou o poderoso ffpacote em R.

A Hmiscembalagem possui pequenos invólucros Savee Loadtorna o que foi exposto ainda mais simples:

mydata <- csv.get(...)  # Hmisc package, has several options
Save(mydata)   # writes mydata.rda to current working directory
....
Load(mydata)   # reads mydata.rda and creates mydata data frame

9

Dê uma olhada nos bancos de dados SQLite3. Cada banco de dados é um arquivo, portanto, não é necessário configurar um servidor de banco de dados.

Para criar um banco de dados:

$ sqlite3 my_db.db3
> CREATE TABLE my_table ( col1 TEXT );

Para uso com R, https://gist.github.com/lynaghk/1062939


+1 O uso de um banco de dados real é um grande passo na direção certa.
— whuber


Obrigado, vou tentar esta rota. Também olhei para o MySQL, mas parece ser mais do que preciso.
— Toy Molto

4

Há várias opções genéricas.

  • Você pode comprimir o texto.
  • Você pode ficar binário no texto, não escrever em ASCII

Uma ótima compactação depende dos dados.

Meu palpite (e você não especificou, então devo adivinhar) é que você deseja armazenar dados semelhantes a planilhas em algo diferente de csv (delimitado por vírgulas).

Um dos meus formatos favoritos (eu amo o MatLab) é o hdf.

Aqui estão informações relacionadas ao R sobre o HDF:

É um formato de armazenamento de dados de supercomputação de alta densidade. Pode ser muito rápido e eficiente. Também é (sem surpresa) mais denso que o texto compactado.


3

Agora, as funções padrão de leitura de arquivos no R leem automaticamente os arquivos compactados com gz. Portanto, basta executar a compactação gzip simples nos seus dados e ler como sempre, como se fosse texto simples.

read.table('myfile.gz')

Arrumado! Eu não sabia disso. Obrigado.
— EngrStudent - Restabelece Monica
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.