Cara terbaik untuk hanya menyimpan data untuk analisis statistik dalam R [ditutup]

12

Saya telah menggunakan file teks untuk menyimpan data saya untuk R tanpa masalah selama beberapa waktu sekarang. Tetapi untuk proyek baru-baru ini ukuran file menjadi terlalu besar untuk ditangani oleh file teks mentah. Apa alternatif sederhana terbaik?

Toy Molto
sumber
5
Dengan cara apa file teks menjadi terlalu besar? Apakah Anda takut akan integritas mereka? Tidak dapat membukanya di beberapa perangkat lunak lain? Apakah terlalu lambat dimuat? Terlalu besar untuk hard drive Anda (laptop?)?
Gala
3
+1 Mengelola data ketika proyek berkembang adalah masalah universal dalam analisis data (dan hampir tidak spesifik untuk R). Perhatian mendasar adalah dengan integritas data daripada ukuran file: mengusulkan beberapa bentuk kompresi hanya mengaburkan ini daripada menyelesaikannya.
whuber
Di atas ukuran tertentu txt sepertinya tidak berfungsi. Saya dapat menambahkan data tambahan ke file txt dan memuatnya ke R, tetapi data tambahan tidak dalam R. (Btw datanya cukup kaya jadi sementara kompresi mungkin membantu sedikit itu tidak akan membuat saya sejauh itu dan saya curiga ketika proyek saya bertambah, saya akan berakhir dengan masalah yang sama lagi.)
Toy Molto
Anda perlu memberi tahu kami lebih banyak tentang data Anda, tidak ada yang namanya "cara terbaik untuk segala jenis data".
zx8754
Apakah maksud Anda read.tableatau read.csvgagal diam-diam? Apakah Anda benar-benar yakin tidak memiliki beberapa file di sekitar dan beberapa kesalahan pengkodean (jalur salah, nama file salah, dll.)? Hanya untuk memperbaiki ide, Anda mungkin juga ingin memberi kami ide tentang berapa banyak variabel dan berapa banyak catatan yang Anda hadapi.
Gala

Jawaban:

10

Pendekatan R standar adalah menggunakan savedan load. Jika Anda menjalankan saveframe data setelah mengimpor dan membuat anotasi, Anda dapat menentukan compress=TRUEdan Anda akan kagum dengan kompresi dan loadwaktu yang cepat . Ini bekerja sangat baik jika ukuran objek kurang dari sekitar 400MB. Jika tidak, periksa beberapa saran di atas, atau ffpaket kuat di R.

The Hmiscpaket memiliki pembungkus kecil Savedan Loaduntuk membuat atas bahkan lebih menyakitkan:

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
sumber
9

Lihatlah database SQLite3. Setiap basis data adalah file, jadi tidak perlu menyiapkan server basis data.

Untuk membuat database:

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

Untuk digunakan dengan R, https://gist.github.com/lynaghk/1062939

momeara
sumber
+1 Menggunakan basis data aktual adalah langkah besar ke arah yang benar.
whuber
Apakah ini alat yang tepat? cran.r-project.org/web/packages/RSQLite/index.html
EngrStudent
Terima kasih, saya akan mencoba rute ini. Saya melihat MySQL juga, tetapi tampaknya lebih dari yang saya butuhkan.
Toy Molto
4

Ada sejumlah opsi umum.

  • Anda dapat memampatkan teks.
  • Anda bisa menggunakan binary pada teks, bukan menulis di ascii

Kompresi hebat tergantung data.

Tebakan saya (dan Anda tidak menentukannya, jadi saya harus tebak) adalah Anda ingin menyimpan data seperti spreadsheet dalam sesuatu selain csv (dibatasi koma).

Salah satu format favorit saya (saya suka MatLab) adalah hdf.

Berikut adalah informasi terkait-R tentang HDF:

Ini adalah format penyimpanan data supercomputing kepadatan tinggi. Ini bisa sangat cepat dan efisien. Ini juga (tidak mengejutkan) lebih padat daripada teks zip.

EngrStudent - Pasang kembali Monica
sumber
3

Fungsi membaca file standar di R sekarang akan secara otomatis membaca file yang di-gzip. Jadi, jalankan saja kompresi gzip sederhana pada data Anda dan baca seperti biasa, seolah itu teks biasa.

read.table('myfile.gz')
John
sumber
Rapi! Saya tidak tahu hal itu. Terima kasih.
EngrStudent