0

これは簡単な質問で、tapply、apply、by などで簡単に解決できると思います。しかし、私はまだ比較的新しいので、アドバイスを求めたいと思います。

問題:

たとえば、5列のデータフレームがあります。たとえば、列 4 と 5 は要因です。列 5 の各因子について、列 5 の各グループの列 1:3 に対して関数を実行したいと考えています。これは、原則として簡単に実行できます。ただし、出力を素敵なテーブルとして表示したいので、これをエレガントな方法で行う方法を学びたいので、ここで質問したいと思います。

例:

 df <- data.frame(x1=1:6, x2=12:17, x3=3:8, y=1:2, f=1:3)

さて、コマンド

 by(df[,1:3], df$y, sum)

の各因子レベルに基づいて合計が得られますがy、これはほとんど私が望むものです。追加の 2 つの手順が必要ですf。これはほとんど自明です。上記のコマンドを簡単にラップすることができlapply、これを除いて、必要なものを取得できます。結果を含むテーブルを生成し、それを使用してヒートマップを生成することさえできます。

したがって、これを行い、対応する出力を持つマトリックスを生成する簡単でエレガントな方法はありますか? これは、データ サイエンティストにとって日常的な作業のように思えます。そのため、既存の組み込みソリューションがあると思われます...

どんなに小さなことでも、助けやヒントをありがとう!

4

1 に答える 1

1

reshape2およびplyrパッケージを使用して、これを実現できます。

library(plyr)
df2 <- ddply(df, .(y, f), sum)

そして、それを af by y 行列に変換します。

library(reshape2)
acast(df2, f ~ y, value.var = "V1")
于 2013-08-20T23:27:12.383 に答える