基于公式的框架总结

时间:2013-03-02 16:12:47

标签: r aggregate

请考虑以下事项:

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

这样的事情存在吗?

2 个答案:

答案 0 :(得分: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 :(得分:1)

查看表包,它允许您在公式语句中指定表的形状,样式和汇总度量。如果您使用如下公式:

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

然后,您将获得一个表格,其中每个group级别都有一行,而底部有一行,那么这些列将是var1var2的平均和标准偏差(共4列)。

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