Ketika saya mengerjakan proyek analisis data, saya sering menyimpan data dalam file data koma atau dibatasi-tab (CSV, TSV). Sementara data sering termasuk dalam sistem manajemen basis data khusus. Untuk banyak aplikasi saya, ini akan menjadi hal yang berlebihan.
Saya dapat mengedit file CSV dan TSV di Excel (atau mungkin program Spreadsheet lain). Ini memiliki manfaat:
- spreadsheet membuatnya mudah untuk memasukkan data
Ada juga beberapa masalah:
- Bekerja dengan file CSV dan TSV mengarah ke berbagai pesan peringatan tentang berbagai fitur yang hilang dan bagaimana hanya lembar aktif yang akan disimpan dan sebagainya. Dengan demikian, itu menjengkelkan jika Anda hanya ingin membuka file dan membuat sedikit perubahan.
- Itu banyak konversi "seharusnya cerdas". Misalnya, jika Anda memasukkan 12/3, itu akan berpikir bahwa Anda ingin memasukkan tanggal. PEMBARUAN: Saya seharusnya menyebutkan bahwa contoh tanggal hanyalah salah satu dari banyak contoh; sebagian besar masalah tampaknya terkait dengan konversi yang tidak tepat. Secara khusus, bidang teks yang terlihat seperti angka atau tanggal menyebabkan masalah.
Atau, saya bisa bekerja secara langsung dengan file teks dalam editor teks standar. Ini memastikan bahwa apa yang saya masukkan adalah apa yang dicatat. Namun itu adalah cara yang sangat canggung untuk memasukkan data (kolom tidak berbaris; sulit untuk memasukkan data hanya ke banyak sel; dll.).
Pertanyaan
- Apa strategi yang baik untuk bekerja dengan file data CSV atau TSV? yaitu, strategi apa yang membuatnya mudah untuk memasukkan dan memanipulasi data sembari memastikan bahwa apa yang Anda masukkan benar-benar ditafsirkan dengan benar?
project-management
Jeromy Anglim
sumber
sumber
Jawaban:
Jika Anda merasa nyaman dengan R, Anda dapat membuat data.frame dasar dan kemudian menggunakan fungsi fix () untuk memasukkan data. Sepanjang baris yang sama dengan # 5, setelah Anda mengatur data.frame Anda dapat menggunakan serangkaian readLines (n = 1) (atau apa pun) untuk memasukkan data Anda, memvalidasinya, dan memberikan kesempatan untuk menambahkan berikutnya baris. Kemudian biarkan perbaikan untuk memperbaiki (). Lihat contoh yang diterapkan di bawah ini menggunakan pemindaian ().
Pilihan lain di excel akan berantakan, tetapi Anda bisa mengetikkan 12/9, lalu minta kolom lain untuk mengevaluasi = IFERROR (MONTH (DateEntryCell) / DAY (DataEntryCell), DataEntryCell). Tetapi kemudian Anda harus mempertahankan lembar excel DAN lembar csv dan semua keluhan saat Anda menulis csv akan bertahan.
Pembaruan: Saya sudah sering membahas masalah ini karena ini adalah masalah yang juga saya miliki. Sejauh ini solusi terbaik / termudah untuk entri data yang pernah saya lihat sejauh ini adalah KillinkCSV . Ini bukan perangkat lunak "gratis", itu shareware dengan durasi percobaan 30 hari dan harga yang wajar (~ $ 27). Saya tidak yakin seberapa besar saya mempercayainya untuk mengedit CSV yang ada - saya menyerahkan CSV yang sangat besar (dan mungkin diformat dengan baik) dan gagal membaca semua baris. Namun sepertinya itu bekerja dengan baik untuk yang cukup besar (20 MB) dan masalah dengan file yang lebih besar mungkin kesalahan pengguna pada bagian saya.
Contoh R:
sumber
csv-mode.el
menginstalnya berkatemacs-goodies-el
paket di Debian / Ubuntu - rapi.Pembaruan: [Setelah melalui tumpukan besar email dari R-Help] Saya teringat akan utas pada " Perilaku
read.csv()
". Dalam hal ini, Duncan Murdoch menyebutkan bahwa dia lebih suka menggunakan file Data Interchange Format (DIF) daripada csv untuk beberapa alasan yang disebutkan Jeromy. Saya baru saja mencoba ini dan Gnumeric salah (memuat 12/3 sebagai tanggal), tetapi OpenOffice.org membaca ini dengan benar dan mempertahankan informasi 12/3 tetap utuh. (Adakah yang mau memeriksa ini di MS Excel?)File DIF adalah teks biasa dan dapat dibaca oleh spreadsheet dan R (selama Anda menggunakan revisi R baru-baru ini (revisi SVN> = r53778)) akan membaca data dalam format yang benar.
Asli : Saya akan mencoba untuk tidak menggunakan penghentian penuh spreadsheet untuk mengedit / memanipulasi data bila memungkinkan. Sangat sulit, jika bukan tidak mungkin, untuk mendokumentasikan setiap perubahan yang Anda buat pada kumpulan data yang ada sehingga cukup banyak aturan itu keluar dari sudut pandang penelitian yang dapat direproduksi. Paling-paling, saya menggunakan spreadsheet untuk dengan cepat melihat data yang ada.
Untuk pemrosesan data, saya cenderung menulis skrip R yang akan mengambil file csv mentah dan menerapkan semua langkah pemrosesan yang diperlukan. Saya sangat berkomentar skrip itu untuk menjelaskan apa yang saya lakukan pada setiap tahap dan mengapa. Skrip analisis data saya kemudian akan memanggil skrip pemrosesan data yang memuat dan memproses data.
Untuk entri data, apakah lebih sulit untuk memasukkan data dalam editor teks atau dalam spreadsheet? Saya menduga masalah yang Anda sebutkan untuk yang terakhir tidak melebihi masalah mencoba memasukkan data CSV ke dalam editor teks.
Anda dapat mencoba spreadsheet yang lebih baik; OpenOffice.org menolak untuk berhenti memformat 12/3 sebagai tanggal (atau mengubahnya menjadi representasi numerik) bahkan jika seseorang memformat kolom sebagai "numerik" terlebih dahulu. Gnumeric di sisi lain akan meninggalkan 12/3 karena jika Anda memformat kolom sebagai "numerik" terlebih dahulu.
Anda dapat memaksa OpenOffice.org untuk tidak memformat ulang 12/3 sebagai tanggal dengan menambahkannya
'
pada entri, yaitu'12/3
akan ditampilkan sebagai 12/3 dalam spreadsheet dan disimpan sebagai teks. Ini mungkin cukup aman untuk digunakan.Tidak yakin mengapa Anda ingin 12/3 disimpan secara numerik sebagai 12/3 dalam file teks - bagaimana seharusnya sesuatu seperti R membaca ini?
Komentar Anda tentang peringatan tentang kehilangan fitur atau hanya menyimpan lembar aktif bukan masalah, bukan? (Jika ya, maka saya ingin masalah Anda dalam hidup saya ;-)
sumber
Saya sarankan Anda melihat google refine (http://code.google.com/p/google-refine/). Saya pikir ini adalah alat yang sangat bagus untuk mengedit file CSV
sumber
Saya akan menghindari bekerja dengan file CSV dan TSV bersama-sama. Alih-alih belajarlah menggunakan SQL dan operasikan hanya pada datamart atau database (DB) salinan data Anda atau Anda bisa menggunakan SAS atau R dengan koneksi passthru ke database Anda. Dengan cara itu Anda dapat membuat pembaruan massal untuk data Anda alih-alih melakukan pencarian dan penggantian yang ditakuti di Excel (atau program spreadsheet apa pun yang Anda gunakan) atau menyalin dan menempel yang mungkin rentan terhadap kesalahan. Keuntungan menggunakan sistem DB juga adalah Anda dapat mengaktifkan logging dan dengan cepat mengembalikan perubahan yang telah Anda buat jika mereka membuat kesalahan dan semua perubahan dapat diaudit. Selain itu, kendala integritas dapat ditempatkan pada tabel DB Anda untuk memastikan Anda tidak salah memperbarui atau mengubah variabel / kolom dengan cara yang Anda anggap tidak pantas (mis. Tanggal tetap sebagai tanggal dan informasi lainnya diketik dengan tepat). Saya menang'
Jika Anda menyukai spreadsheet karena entah bagaimana memudahkan entri data Anda, itu dapat diatasi di setiap database yang pernah saya gunakan dengan menggunakan alat antarmuka pengguna grafis / IDE yang datang dengan database (misalnya Studio Manajemen Microsoft) atau dengan menarik versi yang ditautkan dari basis data Anda ke dalam sistem yang dirancang khusus untuk memasukkan data Anda dan menegakkan batasan data (misalnya formulir tabel yang ditautkan dalam Access atau antarmuka web khusus). Anda juga dapat menggunakan program lain yang akan memungkinkan Anda untuk mendapatkan yang terbaik dari kedua dunia dan memperbarui data di Excel dan meminta perubahan itu menyebar ke database Anda (lihat https://www.youtube.com/watch?v=5iyuF_mDSac misalnya) .
sumber
Setelah saya mengajukan pertanyaan ini, saya mulai melihat CSVed .
Dari situs web:
Saya tidak yakin apakah ada yang punya pengalaman dengannya.
sumber
Excel tidak terlalu ramah CSV. Misalnya, jika Anda memasukkan "1.300" ke Excel, dan menyimpannya sebagai nilai yang dipisahkan koma, itu akan membiarkan Anda! Ini bisa menjadi masalah besar (saya temui secara teratur ketika menerima file dari orang lain).
Saya pribadi menggunakan OpenOffice.org Calc, saya juga menggunakan banyak solusi yang tercantum di atas, namun banyak dari ini tidak memiliki fungsi dan kemudahan penggunaan yang diperlukan untuk pengeditan reguler. OOO Calc jauh lebih cerdas daripada Excel, meskipun menjadi program spreadsheet, Anda masih harus memasukkan "= 12/3" daripada "12/3" jika tidak, Anda akan memasukkan nilai, bukan perhitungan.
Berputar, Anda tidak akan kecewa.
sumber
Saya suka Gnumeric karena tidak mencoba untuk menjadi sangat idiot-tahan seperti yang lain (tidak berteriak tentang kehilangan fungsionalitas) dan bekerja dengan data besar ... namun saya pikir itu hanya Linux.
sumber
Cukup gunakan Editor Ron . Seperti halnya Excel tanpa 'bantuan'.
Dari situs:
sumber
Saya pribadi suka menggunakan ide "database relasional" untuk mengelola file CSV. File CSV baik untuk bertukar data, tetapi tidak mengandung logika bisnis. Pengalaman saya bekerja dengan CSV adalah "ada banyak iterasi dengan bisnis untuk memperbaiki analisis". Bekerja hanya dengan file teks biasa (CSV) akan menimbulkan banyak tantangan. Misalnya, file CSV tidak akan menampilkan "apa yang membuat data unik", yaitu, apa "kunci utama untuk setiap baris". Ini akan menyebabkan masalah besar di kemudian hari, ketika kita memiliki sumber data lain untuk bergabung.
SQLite adalah alat yang baik untuk membuat CSV menjadi basis data relasional, dan mirip dengan CSV, mudah ditukar, dan tidak diperlukan pengaturan server. Lebih penting lagi, ini didukung dengan sangat baik dalam
R
dan perangkat lunak statistik lainnya.Strategi saya selalu menjaga "data yang dibersihkan" dalam basis data relasional. Dan tetap jelas pada kunci utama setiap tabel.
Ini adalah contoh dari apa yang mungkin terjadi dengan kata yang sebenarnya (misalkan kita menjual buku):
Sekarang, Anda dapat melihat keuntungan dari data bersih dan menyimpannya di basis data relasional. Dengan mengatakan ID pelanggan sebagai kunci utama, dan nama buku, penulis, dan edisi sebagai kunci utama. Sangat mudah untuk membuat pembaruan data dan memasukkan perubahan sesuai kebutuhan. Juga kunci utama juga memberikan "kendala" dan "pemeriksaan kewarasan" untuk data baru yang akan datang.
sumber
Jika Anda menggunakan fitur "Impor Data" Excel, itu akan memberi Anda opsi untuk memilih tipe data untuk setiap kolom. Anda dapat memilih semua kolom dan menggunakan tipe data "Teks".
sumber