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?

Toy Molto
fonte
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
Frank Harrell
fonte
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

momeara
fonte
+1 O uso de um banco de dados real é um grande passo na direção certa.
whuber
Essa seria a ferramenta apropriada? cran.r-project.org/web/packages/RSQLite/index.html
EngrStudent - Restabelece Monica em
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.

EngrStudent - Restabelecer Monica
fonte
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')
John
fonte
Arrumado! Eu não sabia disso. Obrigado.
EngrStudent - Restabelece Monica