Dalam pertanyaan sebelumnya saya bertanya tentang alat untuk mengedit file CSV .
Gavin ditautkan dengan komentar pada R Help oleh Duncan Murdoch yang menyarankan bahwa Format Pertukaran Data adalah cara yang lebih andal untuk menyimpan data daripada CSV.
Untuk beberapa aplikasi, sistem manajemen basis data khusus diperlukan. Namun, untuk proyek analisis data skala kecil, sesuatu yang lebih ringan tampaknya lebih cocok.
Pertimbangkan kriteria berikut untuk mengevaluasi format file:
- reliabile : data yang dimasukkan harus sesuai dengan apa yang telah dimasukkan; data harus terbuka secara konsisten dalam perangkat lunak yang berbeda;
- sederhana : alangkah baiknya jika format file mudah dimengerti dan idealnya dapat dibaca dengan editor teks sederhana; seharusnya mudah untuk menulis program sederhana untuk membaca dan menulis format.
- open : formatnya harus terbuka
- interoperable : format file harus didukung oleh banyak sistem
Saya menemukan format nilai tab dan koma yang gagal pada kriteria reliabilitas. Meskipun saya kira saya bisa menyalahkan program impor dan ekspor daripada format file. Saya sering menemukan diri saya harus membuat sedikit penyesuaian pada opsi
read.table
untuk mencegah beberapa karakter aneh dari melanggar memuat frame data.
Pertanyaan
- Format file mana yang paling memenuhi kebutuhan ini?
- Apakah Format Interchange Data alternatif yang lebih baik? atau apakah ia memiliki masalah sendiri?
- Apakah ada format lain yang lebih disukai?
- Apakah saya mengevaluasi TSV dan CSV secara tidak adil? Apakah ada serangkaian tips sederhana untuk bekerja dengan file seperti itu yang membuat format file lebih dapat diandalkan?
sumber
write.DIF()
sehingga itu adalah jalan satu arah yang saya khawatirkan.Jawaban:
Saya ingin tahu apakah ada tabrakan kriteria yang terjadi di sini.
Satu keluhan tentang format file seperti Excel, SQL, dll adalah bahwa Anda harus menentukan tipe data terlebih dahulu agar berperilaku baik, yang bertentangan dengan kriteria "sesuatu yang lebih ringan" (seperti yang saya pahami pembatasan Anda untuk lebih banyak waktu) terkait daripada yang terkait secara komputasi).
Sebaliknya, kriteria yang tidak membersihkan data, atau membiarkan data dibersihkan, memerlukan pengecekan kesalahan. Kecuali jika Anda membiarkan sistem secara otomatis menemukan tipe data (yang pada dasarnya adalah tempat Excel gagal Anda), tidak ada cara untuk mendapatkan kue Anda dan memakannya juga.
IMO, dari keduanya, kriteria kedua lebih penting. Integritas data, setelah dilanggar, membuat analisis menjadi sulit atau tidak mungkin. Pengamatan yang hilang atau nilai yang tidak valid (jika tidak diperiksa dengan benar) dapat mengacaukan segalanya.
Dalam hal DIF, teks mentah yang sebenarnya tidak dapat dibaca manusia dan akan sulit (IMO) bagi manusia untuk melakukan entri data.
IMO, Anda harus memberikan file terbatas goyang yang adil. Seperti yang disebutkan di atas dalam komentar, 'data mangling' sebagian besar merupakan kesalahan subset alat yang Anda gunakan. Program yang berperilaku baik seharusnya tidak memotong-motong file yang dibatasi. Sumber mangling terbesar adalah pembatas yang tidak ditentukan. Misalnya, jika data Anda memiliki koma, CSV tidak sesuai. Jika mungkin memiliki tab TSV tidak pantas. Untuk banyak (tetapi tidak semua) program, Anda dapat menentukan pembatas alternatif. Sebagai contoh, saya telah menggunakan tilde (~) dalam beberapa kasus sulit.
sumber
Dalam semua keseriusan, saya akan mempertimbangkan file RData yang dibuat oleh R itu sendiri sesuai
Cukup dekat untukku. Jika dengan sistem yang Anda maksud aplikasi daripada sistem operasi maka titik terakhir adalah gagal.
Oh, dan RData efisien karena file sekarang secara default dikompresi (yang dulunya merupakan opsi yang dimatikan secara default).
sumber
dput()
menyediakan alternatif teks biasa yang akan bekerja dengan kontrol versi. Namun, salah satu daya tarik dari csv / tsv adalah bahwa ketika saya berbagi repositori dengan data (katakanlah untuk artikel jurnal), orang dapat mengambil data dan menganalisisnya kembali dengan mudah menggunakan perangkat lunak apa pun yang mereka sukai.Menanggapi jawaban Dirk Eddelbuettel, saya sarankan menggunakan format file HDF5 . Ini tidak sesederhana format RData, atau Anda mungkin mengatakan, 'lebih kaya', tetapi tentu saja lebih dapat dioperasikan (dapat digunakan dalam C, Java, Matlab, dll). Saya telah menemukan bahwa I / O yang melibatkan file HDF5 besar sangat cepat.
sumber
Saya tidak yakin mengapa format teks tetap dengan meta data yang sesuai tidak memenuhi kriteria Anda. Tidak sesederhana itu untuk dibaca sebagai pembatas tetapi Anda perlu metadata untuk menggunakan informasi tersebut. Tugas penulisan sintaks untuk membaca program hanya tergantung pada seberapa besar dan rumitnya struktur dataset. SPSS dan Excel memiliki GUI untuk membantu tugas-tugas ini.
Hanya ada dua kesalahan dengan file CSV yang saya temui:
(jika Anda mengalami masalah lain jangan ragu untuk memberikan contoh)
Dua diselesaikan dengan pembatas yang lebih tidak teratur seperti yang disarankan drnexus (pipa (|) adalah yang pernah saya temui sebelumnya, tetapi tilde (~) berfungsi dengan baik karena keduanya tidak mungkin dimasukkan dalam bidang string.) Salah satunya adalah masalah tidak mudah dipecahkan oleh perangkat lunak apa pun yang Anda gunakan, dan keduanya adalah masalah dengan cara orang menulis file untuk memulai, bukan perangkat lunak yang digunakan untuk membaca file.
Saya juga ingin mengatakan saya setuju dengan drnexus pada kedua utas ini dan tanggapannya pada utas baru Anda lainnya tentang mengedit file-file ini. Anda tampaknya mengeluh tentang perangkat lunak yang Anda gunakan (khususnya Excel) dan meminta untuk menyimpan data dalam format yang sesuai dengan perangkat lunak Anda yang berperilaku buruk. Mungkin pertanyaannya adalah bagaimana membuat Excel menghentikan auto-format file teks biasa. Kriteria andal Anda seperti yang tampak bagi saya adalah masalah perangkat lunak dengan membaca file teks biasa. Saya tidak menggunakan R untuk manajemen data, tetapi saya belum kesulitan membaca file yang dibatasi di SPSS seperti yang Anda sarankan.
Jika file asli tidak ditulis dengan benar, apa yang membuat Anda mengharapkan perangkat lunak untuk membaca file dengan andal? Dan format file tertentu tentu tidak akan mencegah Anda dari salah menulis data ke jenis file apa pun yang Anda pilih untuk memulai.
sumber
Masalah umum dengan format teks biasa adalah tidak dapat menyimpan metadata. Bagaimana Anda mendefinisikan data yang hilang? Bagaimana Anda mendefinisikan 1 = sangat tidak setuju, 2 = tidak setuju, ... jenis barang dalam format teks biasa? Dengan format teks biasa, Anda harus menggunakan dokumen lain untuk mendefinisikan metadata tersebut. Dan itu tidak mudah dilakukan dalam XML.
Terkadang masalah ini bisa sangat mengganggu.
Solusi saya adalah menggunakan format data SPSS, yang mandiri dan mudah diedit di SPSS. Saya tahu ini bukan jawaban yang tepat untuk pertanyaan Anda, tetapi saya telah berjuang untuk masalah yang sama sejak lama dan ini adalah solusi saya saat ini.
sumber