6

関数に頭を悩ませることはできませんave。ヘルプを読んだり、ネットを検索したりしましたが、それでも何をするのか理解できません。観測のサブセットにいくつかの機能を適用することは理解していますが、たとえばと同じ方法ではありませんtapply

誰かがおそらく小さな例で私を啓発してくれませんか?

ありがとうございます。また、通常とは異なるリクエストで申し訳ありません。

4

1 に答える 1

13

tapply因子水準ごとに 1 つの結果を返します。 aveまた、因子レベルごとに 1 つの結果を生成しますが、この値を元のデータの各位置にコピーします。

ave集計データを含むデータ フレームに新しい列を作成するのに便利です。

簡単な例:

tapply(iris$Sepal.Length, iris$Species, FUN=mean)
    setosa versicolor  virginica 
     5.006      5.936      6.588 

1 つの値、各因子水準の平均。

aveonirisは、元のデータ フレームと一致する 150 の結果を生成します。

 ave(iris$Sepal.Length, iris$Species, FUN=mean)
  [1] 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006
 [17] 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006
 [33] 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006 5.006
 [49] 5.006 5.006 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936
 [65] 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936
 [81] 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936 5.936
 [97] 5.936 5.936 5.936 5.936 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588
[113] 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588
[129] 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588 6.588
[145] 6.588 6.588 6.588 6.588 6.588 6.588

コメントに記載されているように、ここでは、元のデータの各場所を埋めるために単一の値がリサイクルされています。

関数が複数の値を返す場合、それらの値は、必要に応じて再利用され、場所が埋められます。例えば:

d <- data.frame(a=rep(1:2, each=5), b=1:10)
ave(d$b, d$a, FUN=rev)
 [1]  5  4  3  2  1 10  9  8  7  6

Josh と thelatemail に感謝します。

于 2014-03-09T22:55:31.057 に答える