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:
> require(reshape2)
Loading required package: reshape2
> data(smiths)
> smiths
subject time age weight height
1 John Smith 1 33 90 1.87
2 Mary Smith 1 NA NA 1.54
Kami mencatat bahwa datanya dalam bentuk luas. Untuk menuju ke bentuk panjang, kami membuat smiths
kerangka data cair :
> melt(smiths)
Using subject as id variables
subject variable value
1 John Smith time 1.00
2 Mary Smith time 1.00
3 John Smith age 33.00
4 Mary Smith age NA
5 John Smith weight 90.00
6 Mary Smith weight NA
7 John Smith height 1.87
8 Mary Smith height 1.54
Perhatikan bagaimana melt()
memilih salah satu variabel sebagai id, tetapi kita dapat menyatakan secara eksplisit mana yang akan digunakan melalui argumen 'id'
:
> melt(smiths, id = "subject")
subject variable value
1 John Smith time 1.00
2 Mary Smith time 1.00
3 John Smith age 33.00
4 Mary Smith age NA
5 John Smith weight 90.00
6 Mary Smith weight NA
7 John Smith height 1.87
8 Mary Smith height 1.54
Ini adalah contoh lain dari ?cast
:
#Air quality example
names(airquality) <- tolower(names(airquality))
aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)
Jika kita menyimpan data frame cair, kita bisa dilemparkan ke dalam bentuk lain. Dalam versi baru reshape
(disebut reshape2
) ada fungsi acast()
dan dcast()
mengembalikan hasil seperti array (array, matriks, vektor) atau frame data masing-masing. Fungsi-fungsi ini juga mengambil fungsi agregasi (misalnya mean()
) 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:
> dcast(aqm, month ~ variable, mean)
month ozone solar.r wind temp
1 5 23.61538 181.2963 11.622581 65.54839
2 6 29.44444 190.1667 10.266667 79.10000
3 7 59.11538 216.4839 8.941935 83.90323
4 8 59.96154 171.8571 8.793548 83.96774
5 9 31.44828 167.4333 10.180000 76.90000
Ada benar-benar hanya dua fungsi utama dalam reshape2
: melt()
dan acast()
dan dcast()
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 serupa reshape2
tetapi dirancang untuk melakukan lebih banyak lagi selain itu.