Anda dapat memiliki data dalam format lebar atau format panjang. Ini adalah hal yang cukup penting, karena metode yang dapat digunakan berbeda, tergantung pada formatnya. Saya tahu Anda harus bekerja dengan melt()
dan cast()
dari paket membentuk kembali, tetapi tampaknya ada beberapa hal yang tidak saya dapatkan.
Bisakah seseorang memberi saya gambaran singkat bagaimana Anda melakukan ini?
data-transformation
r
Penampilan
sumber
sumber
melt
dancast
. Konversi dari format lebar ke panjang dilakukan dalam satu tahap. Sebenarnya tidak ada yang lebih istimewa.Jawaban:
Ada beberapa sumber daya di situs web Hadley Wickham untuk paket (sekarang disebut
reshape2
), termasuk tautan ke sebuah makalah tentang paket dalam Journal of Statistical Software.Ini adalah contoh singkat dari makalah ini:
Kami mencatat bahwa datanya dalam bentuk luas. Untuk menuju ke bentuk panjang, kami membuat
smiths
kerangka data cair :Perhatikan bagaimana
melt()
memilih salah satu variabel sebagai id, tetapi kita dapat menyatakan secara eksplisit mana yang akan digunakan melalui argumen'id'
:Ini adalah contoh lain dari
?cast
:Jika kita menyimpan data frame cair, kita bisa dilemparkan ke dalam bentuk lain. Dalam versi baru
reshape
(disebutreshape2
) ada fungsiacast()
dandcast()
mengembalikan hasil seperti array (array, matriks, vektor) atau frame data masing-masing. Fungsi-fungsi ini juga mengambil fungsi agregasi (misalnyamean()
) untuk memberikan ringkasan data dalam bentuk cair. Misalnya, sebagai lanjutan dari contoh Kualitas Udara di atas, kita dapat menghasilkan, dalam bentuk luas, nilai rata-rata bulanan untuk variabel-variabel dalam kumpulan data:Ada benar-benar hanya dua fungsi utama dalam
reshape2
:melt()
danacast()
dandcast()
pasangan. Lihatlah contoh-contoh di halaman bantuan untuk dua fungsi ini, lihat situs web Hadley (tautan di atas) dan lihat kertas yang saya sebutkan. Itu seharusnya bisa Anda mulai.Anda juga dapat melihat
plyr
paket Hadley yang melakukan hal serupareshape2
tetapi dirancang untuk melakukan lebih banyak lagi selain itu.sumber
dcast(aqm, month ~ variable)
, apa yang akan dilakukan tanpa fungsi agregasi??dcast
yang akan mengatakan ini kepada Anda (lihat detail untuk argumenfun.aggregate
).Quick-R memiliki contoh sederhana menggunakan paket membentuk kembali
Lihat juga
?reshape
( LINK ) untuk cara R Dasar bergerak antara format lebar dan panjang.sumber
Anda tidak harus menggunakan
melt
dancast
.Membentuk kembali data dapat dilakukan dengan banyak cara. Dalam contoh khusus Anda pada cite use
recast
with with Andaaggregate
adalah mubazir karenaaggregate
melakukan tugas dengan baik sendiri.Saya suka bagaimana, dalam posting blog Anda, Anda menjelaskan apa yang
melt
sedang dilakukan. Sangat sedikit orang yang mengerti itu dan begitu Anda melihatnya maka akan lebih mudah untuk melihat caracast
kerjanya dan bagaimana Anda bisa menulis fungsi Anda sendiri jika Anda mau.sumber
Lihat wiki bentuk ulang . Ini pasti memberikan lebih banyak contoh seperti yang Anda harapkan.
sumber
Hanya memperhatikan tidak ada referensi untuk metode pembentukan kembali yang lebih efisien dan luas di
data.table
sini, jadi saya memposting tanpa komentar lebih lanjut jawaban yang sangat baik oleh Zach / Arun di StackOverflow untuk pertanyaan serupa:https://stackoverflow.com/questions/6902087/proper-fastest-way-to-reshape-a-data-table/6913151#6913151
Dan khususnya ada sketsa indah di
data.table
halaman GitHub:https://github.com/Rdatatable/data.table/wiki/Getting-started
sumber