Apa cara terbaik untuk membentuk kembali / merestrukturisasi data?


12

Saya seorang asisten peneliti untuk laboratorium (sukarelawan). Saya dan kelompok kecil telah ditugaskan untuk analisis data untuk satu set data yang ditarik dari sebuah penelitian besar. Sayangnya, data dikumpulkan dengan semacam aplikasi online, dan tidak diprogram untuk menampilkan data dalam bentuk yang paling dapat digunakan.

Gambar-gambar di bawah menggambarkan masalah dasar. Saya diberitahu bahwa ini disebut "Membentuk Kembali" atau "Restruktur".

Pertanyaan: Apa proses terbaik untuk beralih dari Gambar 1 ke Gambar 2 dengan kumpulan data besar dengan lebih dari 10k entri?

Ini adalah contoh, file yang sebenarnya memiliki lebih dari 10k entri.  Saya telah memberi kode warna untuk membantu kejelasan

Inilah yang perlu diubah menjadi semua.


1
Silakan pisahkan ini menjadi dua pertanyaan terpisah dan berikan data sampel (Anda juga dapat menghilangkan latar belakang Anda kecuali jika relevan). Secara kasar, pada (1) Anda ingin menemukan pemetaan dan kemudian bergabung untuk melampirkan angka. (2) sangat tergantung pada jenis manipulasi yang ingin Anda lakukan; R paket populer untuk hal semacam ini termasuk data.table, dplyr, plyr, dan reshape2- saya sarankan menghindari Excel dan tabel pivot jika memungkinkan.
Max Ghenis

Saya menduga masalah pembersihan data Anda lebih luas daripada yang dapat dicakup dalam jenis pertanyaan umum yang Anda tanyakan. Anda mungkin ingin melihat OpenRefine.org. Beberapa video dan unduhan mungkin banyak membantu Anda dengan bagian analisis ini.
John

3
Pertanyaan ini tampaknya di luar topik karena ini tentang pembersihan data dan organisasi yang belum sempurna, bukan statistik.
Nick Stauner

2
Saya akan mengatakan itu bukan di luar topik karena membersihkan data Anda, sebagai "belum sempurna" seperti prosesnya, sangat penting untuk menggunakannya. Itu bagian dari masalah yang lebih besar.
shadowtalker

2
@NickStauner, IIRC Saya memilih untuk menutup sebagai 'tidak jelas / perlu info lebih lanjut', bukan sebagai di luar topik. Tampaknya bagi saya bahwa pembersihan data berada dalam ruang lingkup statistik yang besar, & meskipun saya tahu orang baik bisa tidak setuju, saya pikir pertanyaan seperti itu bisa sesuai topik. Pertimbangkan bahwa kami memiliki tag pembersihan data , & utas CV ini: 1 , 2 , 3 , & 4 .
gung - Reinstate Monica

Jawaban:


12

Seperti yang saya catat dalam komentar saya , tidak ada cukup detail dalam pertanyaan untuk jawaban nyata untuk dirumuskan. Karena Anda perlu bantuan bahkan menemukan istilah yang tepat dan merumuskan pertanyaan Anda, saya dapat berbicara secara singkat secara umum.

Istilah yang Anda cari adalah pembersihan data . Ini adalah proses mengambil data mentah, tidak diformat (kotor) dan menjadikannya untuk dianalisis. Mengubah dan mengatur format ("dua" ) dan mengatur ulang baris dan kolom adalah tugas pembersihan data yang umum. 2

Dalam beberapa hal, pembersihan data dapat dilakukan dalam perangkat lunak apa pun dan dapat dilakukan dengan Excel atau dengan R. Akan ada pro dan kontra untuk kedua pilihan:

  • Excel: Excel hampir pasti merupakan pilihan paling umum untuk pembersihan data (lihat R fortune # 59 pdf ). Ini juga dianggap pilihan yang buruk oleh ahli statistik. Alasan utamanya adalah sulit untuk memastikan bahwa Anda telah menangkap segalanya, atau bahwa Anda telah memperlakukan semuanya secara identik, dan tidak ada catatan tentang perubahan yang telah Anda buat, sehingga Anda tidak dapat mengunjungi kembali perubahan itu nanti. Keuntungan menggunakan Excel adalah bahwa akan lebih mudah untuk melihat apa yang Anda lakukan, dan Anda tidak perlu tahu banyak untuk melakukan perubahan. (Ahli statistik akan menganggap yang terakhir sebagai con tambahan .)
  • R: R akan membutuhkan kurva belajar yang curam. Jika Anda tidak terlalu terbiasa dengan R atau pemrograman, hal-hal yang dapat dilakukan dengan cukup cepat dan mudah di Excel akan membuat Anda frustrasi untuk mencoba di R. Di sisi lain, jika Anda harus melakukan ini lagi, pembelajaran itu akan menjadi menghabiskan waktu dengan baik. Selain itu, kemampuan untuk menulis dan menyimpan kode Anda untuk membersihkan data dalam R akan meringankan kontra yang tercantum di atas. Berikut ini adalah beberapa tautan yang akan membantu Anda memulai tugas-tugas ini di R:

    Anda bisa mendapatkan banyak informasi bagus tentang Stack Overflow :

    Quick-R juga merupakan sumber daya yang berharga:

    Memasukkan angka ke mode numerik:

    Sumber lain yang tak ternilai untuk belajar tentang R adalah situs web bantuan statistik UCLA :

    Terakhir, Anda selalu dapat menemukan banyak informasi dengan Google lama yang baik:


Pembaruan: Ini adalah masalah umum mengenai struktur dataset Anda ketika Anda memiliki beberapa pengukuran per 'unit studi' (dalam kasus Anda, seseorang). Jika Anda memiliki satu baris untuk setiap orang, data Anda dikatakan dalam bentuk 'lebar', tetapi Anda tentu akan memiliki beberapa kolom untuk variabel respons Anda, misalnya. Di sisi lain, Anda dapat memiliki hanya satu kolom untuk variabel respons Anda (tetapi sebagai hasilnya, memiliki beberapa baris per orang), dalam hal ini data Anda dikatakan dalam bentuk 'panjang'. Bergerak di antara dua format ini sering disebut 'membentuk kembali' data Anda, terutama di dunia R.

  • Fungsi R standar untuk ini adalah ? Membentuk kembali . Ada panduan untuk menggunakan reshape()situs bantuan statistik UCLA.
  • Banyak orang berpikir reshapesulit untuk diajak bekerja sama. Hadley Wickham telah menyumbang paket yang disebut reshape2 , yang dimaksudkan untuk menyederhanakan proses. Situs web pribadi Hadley untuk reshape2 ada di sini , ikhtisar Quick-R di sini , dan ada tutorial yang terlihat bagus di sini .
  • Ada sangat banyak pertanyaan di SO tentang cara membentuk kembali data. Kebanyakan dari mereka adalah tentang pergi dari lebar ke panjang, karena itulah yang biasanya dihadapi oleh analis data. Pertanyaan Anda adalah tentang pergi dari panjang ke lebar, yang jauh lebih jarang, tetapi masih ada banyak utas tentang itu, Anda dapat melihatnya melalui pencarian ini .
  • Jika hati Anda mencoba melakukan ini dengan Excel, ada utas tentang menulis makro VBA untuk Excel untuk mereplikasi fungsi membentuk kembali di sini: meleleh / membentuk kembali di Excel menggunakan VBA?

2
Pertanyaan ini, dan jawaban ini, adalah ilustrasi yang bagus tentang mengapa pemrograman literasi semakin diperlukan untuk hampir semua jenis penelitian. Saya akan menulis jawaban yang lebih lengkap untuk pertanyaan ini yang juga akan saya posting di blog saya, tetapi saya ingin mendapatkan komentar ini sebelum saya lupa.
shadowtalker

2
Saya setuju sampai batas tertentu tetapi "perlu" dan "segala jenis penelitian" akan berjalan agak jauh. Banyak disiplin ilmu tidak sering berurusan dengan data kotor dan banyak peneliti terkemuka tidak pernah perlu menyentuh bahasa pemrograman.
Behacad

Wow, terima kasih semuanya. Saya perlu sedikit proses dan mengintegrasikan semua informasi ini yang sangat baru bagi saya. Sedikit meta tangent sepertinya saya memacu dengan pertanyaan saya ... Bayangkan diri Anda jatuh ke tanah asing tanpa pengetahuan bahasa / budaya, ini saya dan statistik. Saya menghargai waktu yang telah Anda ambil saat merespons.
Wilkoe

Saya telah menambahkan hasil edit dengan harapan menjelaskan pertanyaan awal saya, meskipun pertanyaannya sepertinya sudah ditutup.
Wilkoe

Pertanyaannya sudah ditutup, @ user48538, & versi ini lebih jelas di luar topik dari sebelumnya, sayangnya. Jika Anda memiliki baris 10rb, Anda tentu tidak ingin mencoba melakukan ini di Excel. Anda benar-benar harus menggunakan R atau perangkat lunak pemrograman serupa. Nama operasi spesifik adalah untuk membentuk kembali dataset Anda dari 'panjang' ke 'lebar', saya akan menambahkan beberapa tautan lagi untuk Anda. Selain itu, jika Anda seorang sukarelawan sarjana, tanpa latar belakang statistik atau pemrograman, sangat tidak bertanggung jawab siapa pun yang memberikan tugas ini kepada Anda, IMHO. Tidak mungkin ini menjadi tugas Anda.
gung - Reinstate Monica

0

Coba ikuti menggunakan R:

> ddf
   sess_id user_id     quest  response
1        1       a       age        29
2        1       a satisfied  st_agree
3        1       a    gender      male
4        1       a     phone    iphone
5        2       a       age        29
6        2       a satisfied not_agree
7        2       a    gender    female
8        2       a     phone    iphone
9        3       b       age        29
10       3       b satisfied     agree
11       3       b    gender      male
12       3       b     phone   android
> 
> library(reshape2)
> dcast(ddf, sess_id+user_id ~ quest, value.var='response')
  sess_id user_id age gender   phone satisfied
1       1       a  29   male  iphone  st_agree
2       2       a  29 female  iphone not_agree
3       3       b  29   male android     agree

0

Dalam scala ini disebut operasi "meledak" dan dapat dilakukan pada dataFrame. Jika data Anda adalah rdd, Anda terlebih dahulu mengonversi ke dataFrame melalui toDFperintah dan kemudian menggunakan .explodemetode ini.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.