データはワイド形式またはロング形式で保存できます。使用可能なメソッドは形式によって異なるため、これは非常に重要なことです。reshapeパッケージを使用したり、パッケージを変更しmelt()たりする必要があることは承知していますが、理解できないことがcast()いくつかあります。
誰かがこれをどのように行うのか簡単な概要を教えてもらえますか?
データはワイド形式またはロング形式で保存できます。使用可能なメソッドは形式によって異なるため、これは非常に重要なことです。reshapeパッケージを使用したり、パッケージを変更しmelt()たりする必要があることは承知していますが、理解できないことがcast()いくつかあります。
誰かがこれをどのように行うのか簡単な概要を教えてもらえますか?
回答:
Journal of Statistical Softwareのパッケージに関する論文へのリンクなど、Hadley Wickhamのパッケージに関するWebサイト(現在は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として変数の1つをどのように選択したかに注意してください。しかし、引数を介して使用するものを明示的に述べることができます'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()andのdcast()ペアリングには、実際には2つの主要な機能しかありません。これら2つの機能のヘルプページの例をご覧ください。HadleyのWebサイト(上記のリンク)を参照し、私が言及した論文をご覧ください。これで開始できます。
また、Hadleyのplyrパッケージを調べることもできます。Hadleyのパッケージは、似たようなことをreshape2しますが、さらに多くのことを行うように設計されています。
dcast(aqm, month ~ variable)、集約関数なしでこれは何をしますか?
                    ?dcastどちらがあなたにこれを伝えたかを読んでください(引数についての詳細を参照fun.aggregate)
                    meltとを使用する必要はありませんcast。  
データの形状変更は、さまざまな方法で実行できます。あなたの特定の例では、recastwith を使用することaggregateは冗長でした。なぜならaggregate、タスクはそれ自体でうまくいくからです。
aggregate(cbind(LPMVTUZ, LPMVTVC, LPMVTXC) ~ year, dtm, sum)
# or even briefer by first removing the columns you don't want to use
aggregate(. ~ year, dtm[,-2], sum)
あなたのブログ記事で、あなたが何meltをしているのかを説明する方法が好きです。それを理解している人はほとんどいないので、一度それを見ると、cast必要に応じてどのように機能し、独自の関数を書くことができるかを簡単に確認できます。
reshape2 wikiを参照してください。あなたが期待できるより多くの例を確実に提供します。
data.tableここでは、より効率的で広範な再形成方法への参照がないことに気付いたので、同様の質問に対するStackOverflowのZach / Arunによる優れた回答をコメントなしで投稿しています。
特に、data.tableGitHubページには素晴らしいビネットがあります。
https://github.com/Rdatatable/data.table/wiki/Getting-started