Rのdata.frame内の因子のすべての一意の組み合わせの要約統計を見つける方法は?[閉まっている]


11

data.frame内の因子の一意の組み合わせごとに、data.frame内の変数の要約を計算したいと思います。これを行うにはplyrを使用する必要がありますか?apply()ではなくループを使用しても問題ありません。したがって、それぞれの固有の組み合わせを見つけるだけで十分です。


1
要因の固有の組み合わせについて質問し、詳細に固有の組み合わせごとの要約について質問すると、質問は誤解を招きます。
Wojtek 2010

回答:


7

aggregateおそらくあなたが探している解決策だと思いますが、考えられるすべての因子の組み合わせの明示的なリストを作成したい場合は、expand.gridそれを行います。例えば

> expand.grid(height = seq(60, 80, 5), weight = seq(100, 300, 50),
             sex = c("Male","Female"))
       height weight    sex
1      60    100   Male
2      65    100   Male
... 
30     80    100 Female
31     60    150 Female

次に、結果のデータフレームの各行をループして、元のデータからレコードを引き出します。


11

aggregateおよびを参照してくださいby。たとえば、次のヘルプファイルからaggregate

## Compute the averages according to region and the occurrence of more
## than 130 days of frost.
aggregate(state.x77,
      list(Region = state.region,
           Cold = state.x77[,"Frost"] > 130),
      mean)

1
最速の正解
John

3

これは、複数の要約統計量を返し、長い計算の進行状況バーを生成するという利点を持つplyrソリューションです。

library(ez) #for a data set
data(ANT)
cell_stats = ddply(
    .data = ANT #use the ANT data
    , .variables = .(cue,flanker) #uses each combination of cue and flanker
    , .fun = function(x){ #apply this function to each combin. of cue & flanker
        to_return = data.frame(
            , acc = mean(x$acc)
            , mrt = mean(x$rt[x$acc==1])
        )
        return(to_return)
    }
    , .progress = 'text'
)

Proftメートル=メートルeaバツ

1

他の提案に加えてdescribe.by()psychパッケージ内の関数が役立つ場合があります。因子変数のレベル全体の数値変数に関する要約統計を表示するために使用できます。


1

私は個人的にcast()、reshapeパッケージのシンプルさが気に入っています。

library(reshape)
cast(melt(tips), sex ~ smoker | variable, c(sd,mean, length))

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.