Вы можете иметь данные в широком формате или в длинном формате. Это довольно важная вещь, так как используемые методы различаются в зависимости от формата. Я знаю, что вы должны работать melt()
иcast()
пакетом измененных форм из него, но есть некоторые вещи, которые я не понимаю.
Может кто-нибудь дать мне краткий обзор, как вы это делаете?
data-transformation
r
наружность
источник
источник
melt
иcast
. Там преобразование из широкоформатного формата в длинный выполняется за один этап. Там действительно нет ничего более особенного.Ответы:
На веб-сайте Хэдли Уикхэма есть несколько ресурсов для пакета (в настоящее время называется
reshape2
), включая ссылку на статью о пакете в журнале статистического программного обеспечения.Вот краткий пример из бумаги:
Отметим, что данные в широкой форме. Чтобы перейти к длинной форме, мы сделаем
smiths
кадр данных расплавленным :Обратите внимание, как
melt()
в качестве идентификатора выбрана одна из переменных, но мы можем явно указать, какой использовать через аргумент'id'
:Вот еще один пример из
?cast
:Если мы храним расплавленный фрейм данных, мы можем привести его в другие формы. В новой версии
reshape
(называетсяreshape2
) есть функцииacast()
иdcast()
возвращая массив типа (массив, матрица, вектор) результат или кадр данных , соответственно. Эти функции также выполняют функцию агрегирования (напримерmean()
) для предоставления сводных данных в расплавленном виде. Например, следуя приведенному выше примеру качества воздуха, мы можем в широком формате сгенерировать среднемесячные значения для переменных в наборе данных:На самом деле есть только две основные функции
reshape2
:melt()
andacast()
иdcast()
сопряжение. Посмотрите примеры на страницах справки для этих двух функций, посетите веб-сайт Хэдли (ссылка выше) и посмотрите на статью, которую я упомянул. Это должно начать вас.Вы могли бы также взглянуть на
plyr
пакет Хэдли, который делает подобные вещи,reshape2
но разработан, чтобы сделать намного больше помимо этого.источник
dcast(aqm, month ~ variable)
Что бы это сделать без агрегирующей функции??dcast
что сказал бы вам это (см. Подробности для аргументаfun.aggregate
).Quick-R имеет простой пример использования пакета reshape
См. Также
?reshape
( ССЫЛКА ) о способе перемещения Base R между широким и длинным форматом.источник
Вам не нужно использовать
melt
иcast
.Изменение формы данных может быть сделано многими способами. В вашем конкретном примере на вашем сайте использование
recast
сaggregate
было избыточно, потомуaggregate
что задача справляется все самостоятельно.Мне нравится, как в своем блоге вы объясняете, что
melt
делаете. Мало кто понимает это, и как только вы это видите, становится легче увидеть, какcast
работает и как вы можете написать свои собственные функции, если хотите.источник
Смотрите reshape2 вики . Это, безусловно, дает больше примеров, как вы могли ожидать.
источник
Просто заметив, что здесь нет ссылок на более эффективные и обширные методы изменения формы
data.table
, поэтому я без дальнейших комментариев отправляю превосходный ответ Зака / Аруна на StackOverflow для аналогичного вопроса:https://stackoverflow.com/questions/6902087/proper-fastest-way-to-reshape-a-data-table/6913151#6913151
И, в частности, на
data.table
странице GitHub есть замечательная виньетка :https://github.com/Rdatatable/data.table/wiki/Getting-started
источник