İstatistiksel analiz için verileri basitçe R'de saklamanın en iyi yolu [kapalı]


12

Bir süredir sorunsuz bir şekilde R için verilerimi saklamak için metin dosyaları kullanıyorum. Ancak yeni bir proje için dosyaların boyutları ham metin dosyalarının işleyemeyeceği kadar büyüyor. En basit alternatif nedir?


5
Metin dosyaları ne şekilde fazla büyüyor? Dürüstlüklerinden korkuyor musunuz? Bunları başka bir yazılımda açamıyor musunuz? Yüklemek için çok yavaş mı? Sabit sürücünüz için çok mu büyük (dizüstü bilgisayar?)?
Gala

3
+1 Projeler büyüdükçe verileri yönetmek, veri analizinde evrensel bir konudur (ve neredeyse hiç spesifik değildir R). Temel endişe, dosya boyutundan ziyade veri bütünlüğüdür: bir tür sıkıştırma önermek bunu çözmek yerine sadece gizler.
whuber

Belirli bir boyutun üstünde txt sadece işe yaramıyor gibi görünüyor. Ek veriyi txt dosyasına ekleyebilir ve R'ye yükleyebilirim, ancak ekstra veri R'de değil. Projem büyüdükçe şüpheleniyorum yine aynı sorunları tekrar edeceğim.)
Toy Molto

Bize verileriniz hakkında daha fazla bilgi vermelisiniz, "herhangi bir veri türünün en iyi yolu" diye bir şey yoktur.
zx8754

Bunu mu demek istediniz read.tableyoksa read.csvsessizce mi başarısızsınız? Etrafta birkaç dosya ve bazı kodlama hatası (yanlış yol, yanlış dosya adı vb.) Olmadığından emin misiniz? Sadece fikirleri düzeltmek için, bize kaç değişken ve yaklaşık olarak kaç kayıt ile uğraştığınız hakkında bir fikir vermek isteyebilirsiniz.
Gala

Yanıtlar:


10

Standardı R yaklaşımı kullanmaktır saveve load. saveVeri çerçevenizi içe aktarıp açıklama ekledikten sonra çalıştırırsanız , belirtebilirsiniz compress=TRUEve sıkıştırma ve hızlı loadzamanda şaşıracaksınız . Nesne boyutu yaklaşık 400 MB'den küçükse bu özellikle işe yarar. Aksi takdirde, yukarıdaki önerilerin bazılarına veya ffR'deki güçlü pakete göz atın.

HmiscPaket küçük sarmalayıcılarını sahiptir Saveve Loadyukarıda daha ağrısız yapmak için:

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

SQLite3 veritabanlarına bir göz atın. Her veritabanı bir dosyadır, bu nedenle bir veritabanı sunucusu kurmayı gerektirmez.

Bir veritabanı oluşturmak için:

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

R ile kullanım için, https://gist.github.com/lynaghk/1062939


+1 Gerçek bir veritabanı kullanmak doğru yönde atılmış büyük bir adımdır.
whuber


Teşekkürler, bu rotayı deneyeceğim. Ben de MySQL'e baktım ama ihtiyacımdan daha fazla gibi görünüyor.
Oyuncak Molto

4

Birkaç genel seçenek vardır.

  • Metni sıkıştırabilirsiniz.
  • Ascii yazmayın, metin üzerinde ikili olabilir

Mükemmel sıkıştırma verilere bağlıdır.

Benim tahminim (ve bunu tahmin etmem gerektiğini belirtmediniz), elektronik tablo benzeri verileri csv (virgülle ayrılmış) dışında bir yerde saklamak istediğinizdir.

En sevdiğim formatlardan biri (MatLab'ı seviyorum) hdf.

HDF hakkında R ile ilgili bilgiler:

Yüksek yoğunluklu bir süper bilgi işlem veri depolama biçimidir. Çok hızlı ve verimli olabilir. Aynı zamanda (şaşırtıcı bir şekilde) sıkıştırılmış metinden daha yoğundur.


3

R'deki standart dosya okuma işlevleri artık gzip edilmiş dosyaları otomatik olarak kolayca okuyacaktır. Bu nedenle, verilerinizde basit gzip sıkıştırması çalıştırın ve her zamanki gibi düz metinmiş gibi okuyun.

read.table('myfile.gz')

Temiz! Bunu bilmiyordum. Teşekkür ederim.
EngrStudent
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.