2013-03-02 80 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列)。

还有其他选项可用于格式化列和标题,您可以使用自己创建的函数来完成摘要,可以进行计数和百分比以及许多其他操作。