2011-09-16 11 views

答えて

9

ジャンプ、あなたは、この表示されます。aggregate()

## Formulas, one ~ one, one ~ many, many ~ one, and many ~ many: 
aggregate(weight ~ feed, data = chickwts, mean) 
aggregate(breaks ~ wool + tension, data = warpbreaks, mean) 
aggregate(cbind(Ozone, Temp) ~ Month, data = airquality, mean) 
aggregate(cbind(ncases, ncontrols) ~ alcgp + tobgp, data = esoph, sum) 

四つの異なる呼び出し、インタフェースを使用して、すべてを。その上

R> class(weight ~ feed) 
[1] "formula" 
R> class(chickwts) 
[1] "data.frame" 

そう集計ディスパッチ(クラスformulaの)第一引数:それはあなたがR.

全体で使用されるメソッドディスパッチメカニズムに関係している引用どのように上に書かれている方法は、第一の例を考えてみましょう。数式がRで解決される方法は通常model.matrixであり、ここでも同様のことが起きて、aggregate.data.frameによって実行されます。chickwtsdata.frameを使用します。あなたが尋ねた何

R> aggregate(weight ~ feed, data = chickwts, mean) 
     feed weight 
1 casein 323.583 
2 horsebean 160.200 
3 linseed 218.750 
4 meatmeal 276.909 
5 soybean 246.429 
6 sunflower 328.917 
R> 

あなたは便利なものを持っている場合、私はドキュメントとまともなR帳の一部で良い徹底した表情をお勧めします、最も簡単な初心者の質問ではありません。 (。そして、他のSOの質問は次の読みすべきことの勧告を与える)

編集:私はaggregate.formula()stats名前空間からエクスポートされていないよう少し掘る必要があったが、あなたはプロンプトでstats:::aggregate.formulaを入力して、それを見ることができます - その後、明確に、それは実際には、ないことaggregate.data.frame()への発送を示している:

[.... some code omitted ...] 
    if (is.matrix(mf[[1L]])) { 
     lhs <- as.data.frame(mf[[1L]]) 
     names(lhs) <- as.character(m[[2L]][[2L]])[-1L] 
     aggregate.data.frame(lhs, mf[-1L], FUN = FUN, ...) 
    } 
    else aggregate.data.frame(mf[1L], mf[-1L], FUN = FUN, ...) 
} 
<environment: namespace:stats> 
R> 
+4

() '' CBINDのすべての列に名前を付けることなく、これを行う方法はありますか?複数の列の場合、なぜ集約(。〜var、...)や名前< - c( "var1"、 "var2"、...)を実行できないのか分かりません。 'aggregate(df [、names]〜var、...)'になります。それともこれはできないのですか? – Hendy

関連する問題