มีแหล่งข้อมูลมากมายบนเว็บไซต์ของ Hadley Wickham สำหรับแพ็คเกจ (ตอนนี้เรียกว่าreshape2
) รวมถึงลิงค์ไปยังกระดาษบนแพ็คเกจใน Journal of Statistics Software
นี่คือตัวอย่างสั้น ๆ จากกระดาษ:
> 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
เราทราบว่าข้อมูลอยู่ในรูปแบบกว้าง เพื่อไปยังแบบยาวเราสร้างsmiths
data frame molten :
> 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
สังเกตว่าmelt()
เลือกตัวแปรตัวใดตัวหนึ่งเป็น id ได้อย่างไร แต่เราสามารถระบุได้อย่างชัดเจนว่าจะใช้อะไรผ่านการโต้แย้ง'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
นี่คืออีกตัวอย่างจาก?cast
:
#Air quality example
names(airquality) <- tolower(names(airquality))
aqm <- melt(airquality, id=c("month", "day"), na.rm=TRUE)
หากเราเก็บกรอบข้อมูลหลอมเหลวเราสามารถส่งไปยังรูปแบบอื่น ๆ ในเวอร์ชันใหม่ของreshape
(เรียกว่าreshape2
) จะมีฟังก์ชั่นacast()
และdcast()
ส่งคืนผลลัพธ์ที่คล้ายกับอาร์เรย์ (อาร์เรย์เมทริกซ์เวกเตอร์) หรือเฟรมข้อมูลตามลำดับ ฟังก์ชั่นเหล่านี้ยังใช้ฟังก์ชั่นรวม (เช่นmean()
) เพื่อให้ข้อมูลสรุปในรูปแบบหลอมเหลว ตัวอย่างเช่นจากตัวอย่างคุณภาพอากาศด้านบนเราสามารถสร้างค่าเฉลี่ยรายเดือนสำหรับตัวแปรในชุดข้อมูลในรูปแบบกว้าง
> 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
จริงๆมีเพียงสองฟังก์ชั่นหลักในreshape2
: melt()
และacast()
และdcast()
การจับคู่ ดูตัวอย่างในหน้าช่วยเหลือสำหรับทั้งสองฟังก์ชั่นดูเว็บไซต์ของ Hadley (ลิงค์ด้านบน) และดูกระดาษที่ฉันพูดถึง คุณควรเริ่มต้น
คุณอาจมองเข้าไปในplyr
แพ็คเกจของ Hadley ที่ทำสิ่งที่คล้ายกันreshape2
แต่ได้รับการออกแบบให้ทำสิ่งต่าง ๆ ได้มากกว่า