2011-09-16 19 views

cevap

9

help(aggregate) örnekleri bölümünün ortasına atlama ve bu göreceksiniz:

## 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) 

Dört farklı aramaları aggregate() kadar bütün formülü arayüzü kullanarak. o ne alıntı

ilk örneği ele alalım R.

boyunca kullanılan yöntem sevk mekanizması ile ilgisi var yukarıda yazıldığı yol: (sınıfın formula arasında) ilk argüman üzerinde

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

böylece agrega gönderir. Bir formülün R'de çözülme şekli tipik olarak model.matrix etrafında döner, benzer bir şeyin burada gerçekleştiğini ve eşdeğer bir aramanın aggregate.data.frame tarafından, chickwts, bir data.frame ikinci argümanı kullanılarak yürütülür. İstediğin nedir

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> 

kullanışlı varsa ben dokümantasyon ve iyi bir Ar kitabın bazı iyi bir ayrıntılı göz öneriyoruz, en kolay acemi bir soru değil. Ben aggregate.formula() stats ad ihraç edilmemesini olarak biraz kazmak zorunda ama isteminde stats:::aggregate.formula yazarak bakabilirsin:

Düzenleme (. Ve diğer SO sorular sonraki okumak için ne kadar tavsiye vermek) - o zaman açıkça, aslında, yaptığı aggregate.data.frame() için sevkini gösteren:

[.... 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' tüm sütunları adlandırma olmadan bunu yapmanın bir yolu var mı? Birden çok sütun için, sanırım neden "toplayamaz (. ~ Var, ...)" veya adları <- c ("var1", "var2", ...) ve sonra " agrega (df [, adlar] ~ var, ...) '. Yoksa bu mümkün değil mi? – Hendy