На веб-сайті Хедлі Вікхема є декілька ресурсів для пакету (зараз його називають reshape2
), включаючи посилання на папір про пакет у Журналі статистичного програмного забезпечення.
Ось короткий приклад з статті:
> 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
кадр даних розплавленим :
> 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'
:
> 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()
спаровування. Подивіться приклади на довідкових сторінках для цих двох функцій, перегляньте веб-сайт Хедлі (посилання вище) та подивіться на згаданий нами документ. Це і повинно вас почати.
You might also look into Hadley's plyr
package which does similar things to reshape2
but is designed to do a whole lot more besides.