2013-03-02 140 views
0

考慮以下幾點:摘要框架的基礎上公式

df = data.frame(x=1:10, y = (1:10) %% 2 == 0) 

我想打電話給像

summarize(x ~ y, data = df) 

,並得到一個輸出像

 FALSE TRUE 
Mean 5  6 
Count 5  5 

基本上,我想要類似xtabs但具有可定製的輸出。例如。 xtabs(x ~ y, data = df, FUN = c(mean, length))

這樣的事情是否存在?

回答

4

您正在尋找基地R的aggregate,但有許多選項可用。隨着aggregate,你必須做的工作一點點把事情恰到好處,但這裏的基本思想是:

> aggregate(x ~ y, df, function(x) cbind(mean(x), length(x))) 
     y x.1 x.2 
1 FALSE 5 5 
2 TRUE 6 5 

爲了讓您開始使用替代品,這裏的「data.table」:

> library(data.table) 
> DT <- data.table(df) 
> DT[, list(Mean = mean(x), Count = length(x)), by = "y"] 
     y Mean Count 
1: FALSE 5  5 
2: TRUE 6  5 

而且plyr:

> library(plyr) 
> ddply(df, .(y), summarize, Mean = mean(x), Count = length(x)) 
     y Mean Count 
1 FALSE 5  5 
2 TRUE 6  5 
1

看看錶包,它可以讓你指定一個桌子的形狀,樣式和綜合性指標全部在公式聲明。如果你使用像一個公式:

group + (n=1) ~ (var1 + var2)*(mean+sd) 

然後你會得到一個表,一排的group每個級別和總排在底部,則列會的平均值和var1var2標準偏差(共4列)。

還有其他選項可用於格式化列和標題,您可以使用自己創建的函數來完成摘要,可以進行計數和百分比以及許多其他操作。